это моя XAMLПривязка к свойству через ContentControl, используя DataTemplate и DataTemplateSelector
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:basic="clr-namespace:Emule.GUI.Design.Templates"
xmlns:Search="clr-namespace:Emule.GUI.Features.Search"
xmlns:Finder="clr-namespace:Emule.GUI.Util.Finder"mc:Ignorable="d"
x:Class="Emule.GUI.Features.Search.View" Title="View" Height="454" Width="696">
<!-- Default DataTemplate -->
<DataTemplate x:Key="DefaultDataTemplate">
<TextBox Grid.Row="2" Grid.Column="2" x:Name="joe"
Visibility="{Binding OperatorValueVisibility, Mode=OneWay}"
Text="{Binding OperatorValue, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
<!-- DataTemplate for string list -->
<DataTemplate x:Key="ListStringDataTemplate">
<basic:ListValuesSearch MinHeight ="740" x:Name="ListValues" />
</DataTemplate>
<!-- DataTemplate Selector -->
<Search:PropertyDataTemplateSelector x:Key="templateSelector"
DefaultDataTemplate="{StaticResource DefaultDataTemplate}"
BooleanDataTemplate="{StaticResource BooleanDataTemplate}"
EnumDataTemplate="{StaticResource EnumDataTemplate}"/>
<StackPanel Grid.Row="2" Grid.Column="2" HorizontalAlignment="Left" >
<ContentControl ContentTemplateSelector="{StaticResource templateSelector}"
Content="{Binding Path=PoDFinder.CodicePod}" />
</StackPanel>
</Window>
и это мой контроль (сетка данных wpftoolkit)
<UserControl x:Class="Emule.GUI.Design.Templates.ListValuesSearch"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfToolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:Finder="clr-namespace:Emule.GUI.Util.Finder">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DataGrid.Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<StackPanel>
<WpfToolkit:DataGrid ItemsSource= "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentControl},
Path=OperatorValues, Mode=TwoWay}" x:Name="ListValuesSearchControl">
<WpfToolkit:DataGrid.Columns >
<WpfToolkit:DataGridTextColumn Header="Lista valori" Width="Auto" Binding="{Binding Path=Item}"/>
</WpfToolkit:DataGrid.Columns>
</WpfToolkit:DataGrid>
</StackPanel>
</UserControl>
мой шаблон данных ListStringDataTemplate
не отображает данные datagrid (показать имя типа), но обратите внимание, что если я использую элемент управления <basic:ListValuesSearch MinHeight ="740" x:Name="ListValues" />
непосредственно без селектора шаблонов данных, работайте нормально.
Я думаю, что проблема заключается в путь ItemsSource= "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentControl}, Path=OperatorValues, Mode=TwoWay}"
я могу решить эту проблему, Wath я неправ?
спасибо
t.
это ошибка ... ListStringDataTemplate = «{StaticResource ListStringDataTemplate}» не в PropertyDataTemplateSelector с этой коррекции работы тонкой – user1351709
как я сказал, что нет никакой необходимости datatemplateselector, ваш код станет намного чище, с просто datatemplate, viewmodels und right binding :) – blindmeis
Мне нужно изменить datatemplate динамически ... – user1351709