【问题标题】:Access UniformGrid ItemTemplate programmatically以编程方式访问 UniformGrid ItemTemplate
【发布时间】:2012-12-26 06:54:12
【问题描述】:

我正在尝试使用 WPF 构建一个宾果游戏模拟器以了解有关 WPF 的更多信息,但我无法弄清楚如何以编程方式更改 <ItemsControl> 模板。

我只使用 VS 2010 的默认 WPF 应用程序,所以我有 MainWindow.xaml、App.xaml 和 MainWindow.xaml.cs。

我想访问<ItemTemplate> 的原因是,如果选择的宾果号码出现,则更改绑定模板。

我已经在我的代码隐藏文件中尝试了this possible solution,但我认为这不适用于这种情况。

这是我设置 MainWindow 和 App xaml 文件的方式

MainWindow.xaml

<ItemsControl Name="icBColumn" ItemsSource="{Binding CardBNumbers}" 
              Grid.Column="0" Grid.Row="2" 
              ItemTemplate="{StaticResource BingoSquare}"
              ItemsPanel="{StaticResource BingoColumn}">

App.xaml

<DataTemplate x:Key="BingoSquare">
  <Border Background="{DynamicResource UnmarkedSquare}">
    <Label Content="{Binding}" />
  </Border>
</DataTemplate>
<RadialGradientBrush x:Key="UnmarkedSquare" GradientOrigin="0.5,0.5" 
                     Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
  <RadialGradientBrush.GradientStops>
    <GradientStop Color="LimeGreen" Offset="1" />
  </RadialGradientBrush.GradientStops>
</RadialGradientBrush>
<ItemsPanelTemplate x:Key="BingoColumn">
  <UniformGrid Name="NumbersGrid" Columns="1" Rows="5"/>
</ItemsPanelTemplate>

【问题讨论】:

    标签: c# wpf datatemplate itemscontrol


    【解决方案1】:

    检查这个link 那里你会发现代码足够接近你的需要,但需要一些工作。

    我建议进行一些重建。

    例如,您将 ItemsControl 的 ItemsSource 绑定到 CardBNumbers。它是 int 列表还是 CustomClass 列表,例如BingoNumClass。如果它是自定义类,则添加一个布尔 IsBingo 布尔属性,您将默认设置为 false。只要选择了宾果编号并且您将更新CardBnumbers列表的项目,就会从您的代码转向True。

    然后,您可以在 IsBingo 属性上使用 Datatriggers 扩展您的 ItemTemplate,以便在选择它后立即更改其外观 - 从您的 CardBNumbers 列表中变为 true。

    【讨论】:

    • 谢谢,我还没看过。我会检查一下并回复你。
    • 我之前想知道您在编辑中添加的内容是否可行!我只是不知道到底怎么做。目前 CardBNumbers 是一个 List。所以我在想,就像你说的那样,只需创建一个代表宾果游戏空间的新类,具有字符串数字属性和布尔检查属性!
    • 是的,就是这样。实现 INotifyPropertyChanged 接口,一旦布尔值更新,您可以使用 xaml 样式数据触发器捕获此事件。如果你想让我更具体一点,我可以而且我会,但在星期一。铜!
    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多