Как использовать шаблоны данных в xaml

1

У меня есть класс контекста данных со сложными полями (объектами). Каждый объект имеет двойное и логическое поле и еще одну интересную информацию. У меня также есть два шаблона данных: один для двойного значения для представления его как слайдера, а другой - для представления поля bool. Как написать xaml для использования двух уже существующих шаблонов данных, которые у меня есть? Проблема заключается в том, что класс контекста данных может иметь поля, которые не являются объектами, содержащими двойное и логическое значение.

Я новичок, но знаю, как работают привязки и контекст данных.

Некоторый код:

Class MyDataContext
{
    public MyWpfField field1;
    public WeirdField field1;
    public MyWpfField field1;
    public WeirdField field1;
}

Class MyWpfField 
{
    public string niceName;
    public bool isEnable;
    public double data;
    .
    .
    .
}

Некоторые xaml:

        <DataTemplate x:Key="DataBoolTmpl">
            <StackPanel 
                Margin="{StaticResource DefaultSpacing}"
                Orientation="Horizontal"
                ToolTip="{Binding ....}">

                <CheckBox 
                    IsEnabled="{Binding ...}"
                    Visibility="{Binding ...}"                        
                    IsChecked="{Binding ...}" />

                <TextBlock Text="{Binding niceName}" />
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="DataTmplSlider">
            <StackPanel 
                IsEnabled="{Binding ...}"
                Margin="{StaticResource DefaultSpacing}"
                ToolTip="{Binding ...}" >
                <TextBlock Text="{Binding niceName}" />
                <StackPanel Orientation="Horizontal"
                            Margin="{StaticResource DefaultSpacing}">
                    <TextBlock Text="{Binding ...}" MinWidth="40"/>
                    <TextBlock Text="{Binding ...}"/>

                    <Slider 
                        Margin="5,0,0,0"
                        Visibility="{Binding ...}"
                        Minimum="{Binding ...}"
                        Maximum="{Binding ...}"
                        IsSnapToTickEnabled="True"
                        SmallChange="{Binding ...}"
                        MinWidth="100"
                        MinHeight="15">
                        <Slider.Value>
                            <Binding ...}"/>
                        </Slider.Value>
                    </Slider>

                </StackPanel>
            </StackPanel>
        </DataTemplate>
  • 0
    Вы можете показать, что у вас есть? То, что вы хотите работать, но нет? Я вроде понимаю, что вы спрашиваете, но некоторый код поможет.
  • 0
    Брэдли, добавил немного кода :)
Показать ещё 5 комментариев
Теги:
wpf
datatemplate

1 ответ

1
Лучший ответ

Адаптировано из этого ответа: qaru.site/questions/336942/...

Используйте ContentControl для использования ваших шаблонов данных:

<ContentControl ContentTemplate="{StaticResource ..}" Content="{Binding MyField}"/>

Вы создадите один для каждого поля. Для получения дополнительной информации см. MSDN.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню