Ответы пользователя по тегу WPF
  • Как вывести в combobox поле, составляющееся из частей?

    WarFollowsMe
    @WarFollowsMe
    Опишите свой ItemTemplate для ComboBox.
    <ComboBox ItemsSource={Binding Items}>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding FirstName}"/>
                    <TextBlock Text="{Binding LastName}"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

    Главное вы должны понимать, что одной лишь модели полученной "Code-First подходом" для WPF недостаточно. Вам необходимо создать ViewModel, в которой надо реализовать INotifyPropertyChanged. И уже эту viewmodel кидать в DataContext на view.
    Ответ написан
    Комментировать
  • Как правильно обрабатывать трейсы в c#?

    WarFollowsMe
    @WarFollowsMe
    1) Возможно вам поможет AOP
    Вот статья где приведен пример использования PostSharp для try-catch

    2) Можно также попробовать использовать AppDomain.UnhandledException.
    Ответ написан
    1 комментарий
  • Валидация в wpf?

    WarFollowsMe
    @WarFollowsMe
    public class OnlyTextValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            bool noNumbers = Regex.Matches("^([^0-9]*)$",value.ToString()).Count > 0;
            return new ValidationResult(noNumbers, "Value contains numbers");
        }
    }

    <Window.Resources>
    		<local:OnlyTextValidationRule x:Key="NoNumberValidate"/>
    </Window.Resources>

    <TextBox Text={Binding Value, ValidationRules={StaticResource NoNumberValidate}}/>
    Ответ написан
    Комментировать
  • Как автоматически пересчитать значения?

    WarFollowsMe
    @WarFollowsMe
    ViewModel со значением давления
    public class PressureViewModel:INotifyPropertyChanged
    {
        private double _pressure;
    
        public double Pressure
        {
            get{return _pressure;}
            set
            {
                _pressure = value;
                SendPropertyChanged("Pressure");
            }
        }
    
        protected void SendPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    
        public event PropertyChangedEventHandler PropertyChanged;
    }


    код конвертера:
    public class PaskalToBarConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            // метод преобразования паскаль в бар
            return PaskalToBar((double)value);
        }
    
        public object ConvertBack(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            //метод преобразования бар в паскаль
            return BarToPaskal((double)value);
        }
    }


    в xaml добавляем ссылку на namespace конвертера:
    xmlns:converters="clr-namespace:ConvertersNamespace"


    в ресурсах добавляем конвретер:
    <Window.Resources>
    		<converters:PaskalToBarConverter x:Key="PaskalToBar"/>
    </Window.Resources>


    ну и в TextBox привязываем давление+конвертер:
    <TextBox x:Name="PaskalPressure" Text={Binding Pressure}/>
    <TextBox x:Name="BarPressure" Text={Binding Pressure, Converter={StaticResource PaskalToBar}}/>


    Тоже самое делаете для мм.р.ст
    Ответ написан
  • Использование Binding в WPF?

    WarFollowsMe
    @WarFollowsMe
    Подскажите, пожалуйста, можно ли использовать привязки в WPF так, чтобы изменения в объекте оказывали влияние на UI-елемент? При этом реализовать это без использования INotifyPropertyChanged.

    Нет.
    Ответ написан
    Комментировать
  • Как реализовать динамический интерфейс?

    WarFollowsMe
    @WarFollowsMe
    У каждого листа своя структура, и у каждой версии файла структура листа может быть другой.

    При использовании WPF и создании динамических UI очень помогает MVVM. Поэтому рекомендую прежде чем бросаться сразу делать UI, реализовать модель всей вашей структуры. Описать классы File, Element. Возможно если речь действительно о каких-то структурированных файлах (.xml, .json) то написать методы сериализации/десериализации.
    Потом создать ViewModel, в ней реализовать все прелести интерфейса INotifyPropertyChanged. Это как раз и даст возможность в вашем UI удобно использовать технологию DataBinding, привязывая элементы отображения к свойствам описанным в ViewModel.
    Ответ написан
    Комментировать