![](/img/trans.png)
[英]XAML Textblock Tapped event not firing inside ItemsControl DataTemplate
[英]ItemsControl ItemTemplate DataTemplate Trigger not firing
我在這里幾乎絕望,不幸的是找不到解決方案。 我有一個帶有DataTemplate
的ItemsControl
,它綁定了PicDuinoModuleV2Ui
的ObservableCollection
。 一旦IsTriggered
標志為真,我想更改Border
的背景。 不幸的是,觸發器不會觸發。 PropertyChanged
也是 null。
<ItemsControl Grid.Row="1" ItemsSource="{Binding ViewModel.Modules}" Margin="10">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border x:Name="Border1" BorderThickness="2" Background="WhiteSmoke" BorderBrush="Black" CornerRadius="5" Width="200" Height="200" Margin="5" Padding="5">
...
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsTriggered}" Value="True">
<Setter TargetName="Border1" Property="Background" Value="LightGreen"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
public class MainWindowViewModel : INotifyPropertyChanged, IDisposable
{
public ObservableCollection<PicDuinoModuleV2Ui> Modules { get; } = new ObservableCollection<PicDuinoModuleV2Ui>();
/// <summary>
/// The PropertyChanged Eventhandler
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raise/invoke the propertyChanged event!
/// </summary>
/// <param name="propertyName"></param>
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class PicDuinoModuleV2Ui : PicDuinoModuleV2, IPicDuinoModuleUiProperties
{
public bool IsTriggered
{
get => _isTriggered;
set
{
_isTriggered = value;
OnPropertyChanged();
}
}
private bool _isTriggered;
/// <summary>
/// The PropertyChanged Eventhandler
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raise/invoke the propertyChanged event!
/// </summary>
/// <param name="propertyName"></param>
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
您的PicDuinoModuleV2Ui
class 沒有實現INotifyPropertyChanged
接口。 嘗試添加接口。
public class PicDuinoModuleV2Ui : PicDuinoModuleV2, IPicDuinoModuleUiProperties, INotifyPropertyChanged
{
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.