Цель Моя цель состоит в том, чтобы загрузить элемент управления в GridView
строке на основании свойства в ViewModel.Binding вопрос по DataTrigger в DataTemplate - WPF
Образец кода: Вот образец xaml, который я пробовал.
<ListView Margin="10" Name="lvUsers">
<ListView.View>
<GridView x:Name="gridview">
<GridViewColumn Header="Type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsImage}" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="Text goes here"
Foreground="Red"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsImage}" Value="False">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Itemsource}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
И мой образец xaml.cs код
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<myClass> mc = new List<myClass>();
mc.Add(new myClass() { Itemsource = "test", IsImage = false });
mc.Add(new myClass() { Itemsource = "test", IsImage = true });
lvUsers.ItemsSource = mc;
}
}
class myClass
{
public string Itemsource { get; set; }
public bool IsImage { get; set; }
}
Выпуск:DataTriggers
работают, как ожидалось, но связывание внутри Triggers
дает мне Empty
<TextBlock Text="{Binding Itemsource}"/>
Я ожидал приведенную выше строку для отображения test
в соответствующей строке, но она отображает Empty
r вл.
".. на основе собственности в viewmodel." У вас нет ViewModel – Tyress
@Tyress Это всего лишь образец кода, чтобы сделать его простым и лучше понять проблему. Фактический код отличается от этого, где у меня есть виртуальная виртуальная машина. – Gopichandar