【发布时间】:2015-08-25 22:23:53
【问题描述】:
如果我有这个:
public class BoardCalc : FrameworkElement
{
public BoardCalc()
{
this.Loaded += BoardCalc_Loaded;
}
void BoardCalc_Loaded(object sender, RoutedEventArgs e)
{
Boards = Math.Floor(LengthRequired / 16);
BoardsRequired2 = Math.Floor(LengthRequired / 16);
}
public Double LengthRequired { get; set; }
private Double _Boards;
public Double Boards
{
get
{
return _Boards;
}
set
{
_Boards = value;
}
}
//public Double Boards
//{
// get { return (Double)GetValue(BoardsProperty); }
// set { SetValue(BoardsProperty, value); }
//}
//// Using a DependencyProperty as the backing store for Boards. This enables animation, styling, binding, etc...
//public static readonly DependencyProperty BoardsProperty =
// DependencyProperty.Register("Boards", typeof(Double), typeof(BoardCalc), null);
public Double BoardsRequired2
{
get { return (Double)GetValue(BoardsRequired2Property); }
set { SetValue(BoardsRequired2Property, value); }
}
// Using a DependencyProperty as the backing store for BoardsRequired2. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BoardsRequired2Property =
DependencyProperty.Register("BoardsRequired2", typeof(Double), typeof(BoardCalc), null);
}
我这样做:
<StackPanel xmlns:Boards="clr-namespace:BoardsUtil" >
<Boards:BoardCalc x:Name="boardCalc1"
LengthRequired="5280" />
<TextBlock Text="{Binding ElementName=boardCalc1, Path=Boards}" />
<TextBlock Text="{Binding ElementName=boardCalc1, Path=BoardsRequired2}" />
</StackPanel>
两部分问题:
当我使用依赖属性时,Boards 值将在设计器中计算并显示 330 个板。如果我使用常规属性,它在设计时将为 0。在运行时,任何一个都可以工作。这是我们所期望的吗?如果是这样,或者如果不是,有人可以向我解释为什么会这样,这样我就可以解决它并检查我的其余代码是否实际工作。
我应该使用 LengthRequired 的依赖属性吗?如果你从 XAML 设置一个属性,你应该使用依赖是吗?但是,如果您只是绑定到 XAML 中的属性,您可以使用常规属性吗?这是我们在这里看到的行为吗?这是我们所期望的吗?不?是的?为什么,所以我可以决定要做什么。
【问题讨论】:
标签: wpf xaml properties dependency-properties