【发布时间】:2011-05-29 10:53:23
【问题描述】:
我是 WPF 新手,无法从 MainWindow XAML 文件中获取自定义用户控件的属性值。
在这里,我想将值“8”作为行数和列数,但在我的 InitializeGrid() 方法中,从未设置属性。它们始终为“0”。我做错了什么?
任何参考也将不胜感激。
这是我的 MainWindow.xaml(相关部分):
<local:BoardView
BoardRows="8"
BoardColumns="8"
/>
这是我的 BoardView.xaml:
<UniformGrid
Name="uniformGrid"
Rows="{Binding BoardRows}"
Columns="{Binding BoardColumns}"
>
</UniformGrid>
</UserControl>
这是我的 BoardView.xaml.cs:
[Description("The number of rows for the board."),
Category("Common Properties")]
public int BoardRows
{
get { return (int)base.GetValue(BoardRowsProperty); }
set { base.SetValue(BoardRowsProperty, value); }
}
public static readonly DependencyProperty BoardRowsProperty =
DependencyProperty.Register("BoardRows", typeof(int), typeof(UniformGrid));
[Description("The number of columns for the board."),
Category("Common Properties")]
public int BoardColumns
{
get { return (int)base.GetValue(BoardColumnsProperty); }
set { base.SetValue(BoardColumnsProperty, value); }
}
public static readonly DependencyProperty BoardColumnsProperty =
DependencyProperty.Register("BoardColumns", typeof(int), typeof(UniformGrid));
public BoardView()
{
InitializeComponent();
DataContext = this;
InitializeGrid();
}
private void InitializeGrid()
{
int rows = BoardRows;
int cols = BoardColumns;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
uniformGrid.Children.Add( ... );
// ...
}
}
}
【问题讨论】:
标签: c# wpf xaml initialization dependency-properties