【问题标题】:Adding a property to a Control向控件添加属性
【发布时间】:2017-06-26 21:03:29
【问题描述】:

正如标题所说,我想为 Button 控件添加一个“IsSelected”属性。

我正在尝试在 WPF 上制作纸牌游戏。
我需要知道是否选择了某个卡(按钮)。

我拼命想做的是:
单击该按钮时,它会将其“IsSelected”属性从 false 更改为 true。
就像 CheckBox 如何使用它的“IsChecked”属性一样。

我已阅读有关添加 DependencyProperty 的信息,但在 Internet 上没有找到如何在 XAML 代码上实际实现它的方法。

如果还不清楚,我正在尝试模仿这种效果 -

长话短说我想做以下事情:

<Button x:Name="cardFaceUp2" />

到这里:

<Button x:Name="cardFaceUp2" IsSelected="False" />

顺便说一句,我使用按钮是因为它似乎更容易用于我的目的。

如果您认为我应该为我的程序使用其他控件,请告诉我。

【问题讨论】:

  • 你做错了。您可以添加属性,方法是创建附加属性(在单独的静态类中实现)或子类化 Button 并向子类添加依赖属性(您不能修改Button 类本身,就像您可以修改 any 您没有编写的类一样)。但是,做你想做的事情的正确方法是创建一个视图模型对象来保存你想要处理的状态(例如“选择”),然后设计 XAML/视图来适当地响应那个状态。
  • ToggleButton 控件也已经这样做了。
  • 老实说,我不认为按钮是你想要的。对于您的情况,似乎有一系列可供选择的东西。在这种情况下,我认为 ListView 可能更适用。您可以设置 SelectionMode=Multiple,这将通过单击来选择/取消选择。

标签: c# .net wpf


【解决方案1】:

您可以将Button 替换为ToggleButton。后者有一个IsChecked 类型为bool? 的属性:

<ToggleButton x:Name="cardFaceUp2" IsChecked="True" />

很明显,如果不重新编译,您就无法真正将新属性添加到类中。您可以创建一个attached property,但在这种情况下似乎没有必要。

【讨论】:

    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2011-03-12
    • 2011-04-07
    • 2012-04-13
    相关资源
    最近更新 更多