[英]WPF DataGrid DataTrigger Binding on DataContext property
[英]WPF Datatrigger on button based on datagrid
目前,我有以下數據觸發器:
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ScheduleDataGrid, Path=HasItems}"
Value="false">
<Setter Property="Button.IsEnabled" Value="false"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
我有兩個按鈕,可以在數據網格中添加/刪除一行
<Button Name="BtnAddPoint" Content="Add" Width="70" Margin="10 0 10 0" Click="BtnAddSchedule_Click"></Button>
<Button Name="BtnDeletePoint" Content="Delete" Width="70" Click="BtnDeleteSchedule_Click"></Button>
我有兩個問題。
目前,當我只想要禁用刪除按鈕時,上面的觸發器會禁用這兩個按鈕。 將setter的targetname設置為delete按鈕不起作用。 我可以將觸發器定位到特定按鈕嗎?
此外,我希望刪除按鈕僅在選擇網格項時啟用,而不是檢查項目計數。 這可能嗎?
如果要將Style
分配給適當的按鈕,則應使用Style
with key:
<Style x:Key="DeleteButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Button.IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ScheduleDataGrid, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
在BtnDeletePoint
按鈕中,您應該添加樣式:
<Button Name="BtnAddPoint" Content="Add" Width="70" Margin="10 0 10 0" Click="BtnAddSchedule_Click"></Button>
<Button Name="BtnDeletePoint" Content="Delete" Width="70" Click="BtnDeleteSchedule_Click" Style="{StaticResource DeleteButtonStyle}"></Button>
您可以編寫觸發器並檢查SelectedItem
是否為空,而不是檢查HasItems
並編寫另一個觸發器來檢查網格是否已選擇項目。 如果網格包含項目,並且用戶選擇了其中一項,則SelectedItem
屬性會為您提供信息。
如果兩個Button
共享相同的Style
並因此具有相同的Trigger
,那么它們將在相同的情況下被禁用(在這種情況下,當DataGrid
有0個項目時)。
為了在不同情況下禁用“刪除” Button
,您需要使用不同的Trigger
創建單獨的Style
,並將該樣式應用於BtnDeletePoint。 由於我沒有看到你在按鈕的聲明中設置Style
,我猜測觸發器屬於Button
的隱式樣式,所以你需要為新樣式分配一個x:Key
,這樣你就可以分配它到你的刪除按鈕:
<Style x:Key="DeleteButtonStyle" TargetType="Button">
<!-- Setters -->
<!-- Triggers -->
</Style>
<Button Name="BtnDeletePoint" Style="{DynamicResource DeleteButtonStyle}" Content="Delete" Width="70" Click="BtnDeleteSchedule_Click"/>
至於在僅選擇單個項目時啟用刪除按鈕的觸發器,如果您不想在DataGrid
上使用SelectedItems
屬性的Count
,則需要使用Converter
來確定選擇狀態。 grid - 我知道DataGrid
上沒有其他DependencyProperties
可以為你提供這些信息。
另外,如果沒有更多的代碼,我不確定上下文,但是在這種情況下你不相信你想要一個DataTrigger
- 你應該沒有標准的Trigger
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.