在我的WPF應用程序中我有很多由複選框和標籤組成的DockPanel。我希望應用程序處理DockPanel的mousedown事件,就好像複選框被點擊一樣,即用戶不必特別點擊複選框;他還可以單擊標籤以選中/取消選中該複選框。 我添加了一個事件處理程序「DockPanel_MouseDown」,它簡單地翻轉了複選框的IsChecked屬性,並且這可以工作。 我的問題是,我有很多這些DockPanels,我不想給每個複選框和每個dockpanel一個名稱,並寫了數百個基本上做同樣事情的eventhandlers。 有沒有辦法將這種行爲放入樣式或模板中? C隧道Dockpanel Mousedown事件在WPF中的複選框
0
A
回答
2
爲什麼使用單獨的標籤檢查和取消選中複選框?
<StackPanel> <CheckBox IsChecked="{Binding IsChecked, ElementName=checkbox}" Content="Hello"> <CheckBox.Template> <ControlTemplate TargetType="CheckBox"> <ContentPresenter/> </ControlTemplate> </CheckBox.Template> </CheckBox> <CheckBox x:Name="checkbox" Content="Normal checkbox"/> </StackPanel>
0
你真的沒有給它們命名或爲每個DockPanel中的事件處理程序。
您可以對所有這些dockpanels使用相同的事件處理程序,並且在您的事件處理程序中可以使用發件人而不是名稱。
<StackPanel Orientation="Vertical">
<DockPanel Tag="false" MouseUp="DockPanel_OnMouseUp">
<CheckBox DockPanel.Dock="Left" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DockPanel}}, Path=Tag, Mode=TwoWay}"/>
<Label DockPanel.Dock="Right" Content="CheckBox1" />
</DockPanel>
<DockPanel Tag="false" MouseUp="DockPanel_OnMouseUp">
<CheckBox DockPanel.Dock="Left" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DockPanel}}, Path=Tag, Mode=TwoWay}"/>
<Label DockPanel.Dock="Right" Content="CheckBox1"/>
</DockPanel>
<DockPanel Tag="false" MouseUp="DockPanel_OnMouseUp">
<CheckBox DockPanel.Dock="Left" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DockPanel}}, Path=Tag, Mode=TwoWay}"/>
<Label DockPanel.Dock="Right" Content="CheckBox1"/>
</DockPanel>
<DockPanel Tag="false" MouseUp="DockPanel_OnMouseUp">
<CheckBox DockPanel.Dock="Left" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DockPanel}}, Path=Tag, Mode=TwoWay}"/>
<Label DockPanel.Dock="Right" Content="CheckBox1"/>
</DockPanel>
</StackPanel>
代碼:
private void DockPanel_OnMouseUp(object sender, MouseButtonEventArgs e)
{
var dockPanel = (DockPanel) sender;
dockPanel.Tag = !dockPanel.Tag.ToString().ToLower().Equals("true");
}
相關問題
- 1. wpf中的路由隧道事件
- 2. mousedown事件不觸發在C#中的dockpanel套件#
- 3. 防止WPF事件隧道效應
- 4. WPF按鈕隧道OnClick事件
- 5. WPF,Image MouseDown事件
- 6. 複選框DataGridViewTemplate中的事件WPF
- 7. 事件隧道如何在WPF中工作?
- 8. WPF - 家長如何知道子控件複選框的「選中」事件?
- 9. 按鍵事件隧道
- 10. 隧道事件和ContextMenu
- 11. 矩形的MouseDown拋父帆布MouseDown事件在WPF
- 12. 從複選框未選中事件的WPF返回值
- 13. FrameworkElement對象上的WPF MouseDown事件
- 14. 複選框在WPF
- 15. WPF複選框列表
- 16. WPF隧道一個Button_Click
- 17. WPF隧道,實際使用?
- 18. WPF如果sizechanged事件不會冒泡,它會隧道嗎?
- 19. WPF複選框切換器isChecked在不同的事件
- 20. 複選框事件在angular2
- 21. 吃MouseDown事件關閉WPF菜單後
- 22. Mousedown事件發射兩次(WPF)
- 23. 已選中複選框WPF
- 24. 在已禁用的WPF中處理單擊事件或MouseDown StackPanel
- 25. 在dockpanel控件中填寫文本框/ w stackpanel - WPF
- 26. 什麼是使用隧道CommandBinding.previewcanexecute事件?
- 27. WPF隱形複選框
- 28. 複選框的onkeyup事件
- 29. 的onclick複選框事件
- 30. 在wpf中檢查DevExpress的DataGrid控件的複選框列的事件
哈哈。事實上,從來沒有發生過一個組合框可能有適當的屬性來實現這種行爲。感謝一堆! – Curtis