我遇到了一個問題,我的應用程序無法通過它。我創建了以下簡單的WPF應用程序來說明情況。WPF綁定和DataTemplate
MainWindow.xaml:
<Window x:Class="GlobalDataTemplate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:GlobalDataTemplate"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type my:MyData}">
<StackPanel Background="{Binding BgColor}">
<TextBlock Text="{Binding Text}"/>
<TextBlock Text="{Binding Number}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<my:MyData x:Name="NW" Text="NW" Number="1" BgColor="#FFFF0000" />
<my:MyData x:Name="N" Text="N" Number="2" BgColor="#FF63FF00" />
<my:MyData x:Name="NE" Text="NE" Number="3" BgColor="#FFFFCA00" />
<my:MyData x:Name="W" Text="W" Number="4" BgColor="#FF0037FF" />
<my:MyData x:Name="C" Text="C" Number="5" BgColor="#FF9E00FF" />
<my:MyData x:Name="E" Text="E" Number="6" BgColor="#FF838383" />
<my:MyData x:Name="SW" Text="SW" Number="7"
BgColor="{Binding ElementName=NW, Path=BgColor}" />
<my:MyData x:Name="S" Text="S" Number="8"
BgColor="{Binding ElementName=N, Path=BgColor}" />
<my:MyData x:Name="SE" Text="SE" Number="9"
BgColor="{Binding ElementName=NE, Path=BgColor}" />
</ItemsControl>
</Window>
MyData.cs:
using System.Windows;
using System.Windows.Media;
namespace GlobalDataTemplate
{
class MyData : DependencyObject
{
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(MyData), new UIPropertyMetadata(null));
public int Number
{
get { return (int)GetValue(NumberProperty); }
set { SetValue(NumberProperty, value); }
}
public static readonly DependencyProperty NumberProperty =
DependencyProperty.Register("Number", typeof(int), typeof(MyData), new UIPropertyMetadata(0));
public Brush BgColor
{
get { return (Brush)GetValue(BgColorProperty); }
set { SetValue(BgColorProperty, value); }
}
// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BgColorProperty =
DependencyProperty.Register("BgColor", typeof(Brush), typeof(MyData), new UIPropertyMetadata(null));
}
}
從XAML,你希望看到在底部相同的顏色一個3x3的網格,在頂部顯示。但底部行的顏色根本沒有顯示(您會看到窗口的白色背景)。我怎樣才能讓底部的顏色正確地綁定到頂部的顏色?
我也嘗試添加屬性更改處理程序並設置斷點。斷點不會被擊中。
在此先感謝。
我假設沒有顏色? – CodingGorilla
您可能還需要在UniformGrid上設置Rows屬性: –
Ross
@CodingGorilla,本質上是,它們是無色的。正如我所提到的,你會看到窗口的白色背景。 – gregsdennis