如果至少有一个按钮可用,如何正确设置“ IsAtLeastOneUserAvailable”依赖项属性? 依赖属性在xaml的代码中设置。 因此,我们可以像这样绑定它

“ {Binding IsAtLeastOneUserAvailable,ElementName = control}”

如果在ItemsControl中看不到任何控件,我想隐藏标签。

<UserControl ... Name="control">
<Label Content="Test" Visibility={Binding IsAtLeastOneUserAvailable, ElementName=control">
<ItemsControl ItemsSource="{Binding Users, ElementName=control}" >
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Button Visibility="{Binding IsAvailable, Converter={StaticResource BooleanToVisibilityConverter}}">
        <Button.Triggers>              
          <DataTrigger Binding="IsAvailable" Value="True">
            <Setter Property="IsAtLeastOneUserAvailable" Value="True" />
          </DataTrigger>
        </Button.Triggers>
        <StackPanel Orientation="Horizontal">
          <TextBlock Text="{Binding Name}"/>
        </StackPanel>
      </Button>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>

===============>>#1 票数:0 已采纳

为什么不尝试仅基于linq查询在UserControl中设置UserControl.IsAtLeastOneUserAvailable属性,而不是尝试使用触发器来设置值?

public bool IsAtLeastOneUserAvailable
{
    get
    {
        return Users.Any(p => p.IsAvailable);
    }
}

您还可以在用户的​​更改事件中引发此PropertyChanged事件:

public MyUserControl()
{
    Users.CollectionChanged += Users_CollectionChanged;
}

void Users_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    if (e.NewItems != null)
        foreach(User user in e.NewItems)
            user.PropertyChanged += User_PropertyChanged;

    if (e.OldItems != null)
        foreach(User user in e.OldItems)
            user.PropertyChanged -= User_PropertyChanged;
}

void User_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "IsAvailable")
        RaisePropertyChanged("IsAtLeastOneUserAvailable");
}

  ask by Melursus translate from so

未解决问题?本站智能推荐:

2回复

datatrigger无法设置绑定属性

我有2个复选框(chkMfsUi和chkMfs)。 当我检查chkMfsUi时,我也想检查chkMfs(并禁用它)。 我用datatrigger尝试过: 这些是我的复选框: IsEnabled属性可以正常工作,但IsChecked不能。 也许因为绑定了? 我也在这些属
1回复

DataTrigger无法处理嵌套的依赖项属性

我有以下类( TextListClass和TextEntryClass )。 C#代码 和跟随Style XAML样式 每当选择新的TextEntryClass ,都会显示新的Text (获得单独的DataTemplate 。忽略以保留调查)。 但是我也想更改Foo
2回复

为什么我的DataTrigger不更新TabControl的SelectedIndex属性?

我有一个TabControl ,它的SelectedIndex属性绑定到这样的布尔值: 如果IsRunning属性更改为True ,则TabControl仅应切换到第二个选项卡,但是现在的问题是,一旦IsRunning属性更改,TabControl不会自动更新以显示第二个TabItem
4回复

对DataTrigger条件的Value属性使用绑定

我正在使用WPF应用程序,并且在数据触发器方面苦苦挣扎。 我想将触发条件的值绑定到我拥有的某些对象上: 但是,不允许这样做,因为似乎无法对Value属性使用绑定。 是吗? 我能以某种方式实现吗? 我收到以下错误: 不能在'DataTrigger'类型的'Value'属性
2回复

WPF-从DataTrigger更新依赖项属性

我有一个listView,并希望当选择一个项目从DataContext更新一个公共值时。 我知道我可以通过listview的SelectedItem来做到这一点,我想(如果可能)使用数据触发器来做到这一点。 码:
2回复

反向DataTrigger?

我可以使用DataTrigger基于基础数据对象的属性触发ListBoxItem模板上的属性设置,如下所示 但是,如果我想做相反的事情怎么办? 我的意思是根据我的ListBoxItem的属性值在基础数据对象上设置属性值。 就像是: 是否有针对此类情况的机制,或者建议采用哪种方
1回复

DataTrigger的参数

我在mij XAML中有3个条目,第一个将具有一个值(假设为100),第二个和第三个的总和必须等于100。当第二个被填充时,第三个将自动包含100之间的差以及第二个条目中的值。 我正在尝试使用get; set;保持ViewModel尽可能干净。 没别的,所以我想知道是否可以使用DataT
1回复

为什么此DataTrigger更改基于祖先附加属性的元素样式不起作用?

所以,我有一些控件的窗口。 在资源部分中,我定义了这种样式: 在我的窗口中,定义了一个名为“ CurrentTheme”的附加属性,该属性存储(基于枚举)系统范围内使用的当前主题。 这是代码: 每次用户更改系统主题时,我的窗口都会通过WndProc收到回调,通知主题已更改。
3回复

应用于文本框的text属性的DataTrigger导致其绑定停止工作

我在TextBox上有一个功能绑定,它充当了searbar。 但是,当我将以下触发器应用于相同的绑定(第一个触发器)时,它将停止绑定。 我还包括了第二个触发器,以确保在解决第一个触发器后,它不会造成无限循环的情况。 因此,也请对此发表评论。 这两个触发器的目的是在TextBox
2回复

特定类型的DataTrigger

我有一个场景,我需要指定函数 为此,我使用了两个DataGrid 。 左侧DataGrid包含函数 右侧DataGrid包含所选函数的参数 我只想参数DataGrid当在功能选择一个有效的功能启用DataGrid 。 如果选择NewItemPlaceHolde