如何在ListBox样式上从DataTrigger更改按钮的IsEnabled属性?我尝试了很多选择,同样,我也没有解决方案。
<Style TargetType="ListBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Items.Count}" Value="0">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="0 0 0.55 0.55" BorderBrush="black" Margin="0 0 0 5">
<TextBlock Foreground="Black" Text="Нет студентов" Margin="20" FontSize="11"></TextBlock>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Grid x:Name="gridButtons" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.1*" />
<ColumnDefinition Width="0.1*" />
<ColumnDefinition Width="0.1*" />
<ColumnDefinition Width="0.2*" />
</Grid.ColumnDefinitions>
<Button Command="{Binding AddCommand}" Grid.Column="0">
<Image Source="Resources/icons/add-icon.png"></Image>
</Button>
<Button Command="{Binding RemoveCommand}" CommandParameter="{Binding SelectedStudent}" Grid.Column="1">
<Image Source="Resources/icons/delete-icon.png"></Image>
</Button>
<Button x:Name="btnSave" Command="{Binding SaveCommand}" Grid.Column="2">
<Image Source="Resources/icons/save-icon.png"></Image>
</Button>
<Button Command="{Binding RefreshCommand}" Grid.Column="3">
<Image Source="Resources/icons/refresh-icon.png"></Image>
</Button>
</Grid>
我需要当ListBox项目计数为0时,btnSave的属性IsEnabled为True。
我做了所有,因为mm8给我写了,但仍然没有用。
我做了什么?
<ListBox x:Name="lbStudents" Grid.Column="0" AlternationCount="2" BorderThickness="0 0 1 1" BorderBrush="black" Margin="0 0 0 5" ItemsSource="{Binding Students}"
SelectedItem="{Binding SelectedStudent}" SelectionMode="Single">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="stpListBoxItem" Margin="4 7 4 7">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat=" {0} {1}">
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="btnSave" Command="{Binding SaveCommand}" Grid.Column="2">
<Image Source="Resources/icons/save-icon.png"></Image>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, ElementName=lbStudents}" Value="0">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
&#13;
我花了很多时间来解决这个问题,但仍然没有找到解决方案。抱歉我的英语不好。
答案 0 :(得分:1)
如何在ListBox样式上从DataTrigger更改按钮的IsEnabled属性?
你不能。 Setter
ListBox
中的Style
只能设置ListBox
所适用的Style
的属性。
您可以将Style
应用于绑定到Button
的属性的ListBox
,但是:
<Button x:Name="btnSave" Command="{Binding SaveCommand}" Grid.Column="2">
<Image Source="Resources/icons/save-icon.png"></Image>
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, ElementName=listBox}" Value="0">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
这仅适用于ListBox
的{{1}}&#34; listBox&#34;与x:Name
具有相同的命名范围。
当您的Button
属性false
属性CanExecute
属性时,您真正应该从SaveCommand
ItemsSource
方法返回ListBox
必须有0
的计数。