在 xaml 中,with 可以设置为
<UserControl Width="100" />
我想在 VM 中设置宽度并将其绑定到 Xaml 中的宽度,例如
<UserControl Width="{Binding mywidth}" />
在 VM 中,将 mywidth 定义为整数,如
public int mywidth {
get {
return 100;
}
}
但它不起作用。宽度绑定应该设置什么样的类型?
在 xaml 中,with 可以设置为
<UserControl Width="100" />
我想在 VM 中设置宽度并将其绑定到 Xaml 中的宽度,例如
<UserControl Width="{Binding mywidth}" />
在 VM 中,将 mywidth 定义为整数,如
public int mywidth {
get {
return 100;
}
}
但它不起作用。宽度绑定应该设置什么样的类型?
我没有使用 WPF 的经验,但在 silverlight 中,宽度和高度值是 Double 类型。但是,将它绑定到整数应该不会有问题,因为 silverlight 可以轻松处理这些事情。也许对您打算做什么以及实际发生的事情进行描述,以及更详细的代码示例可能会有所帮助。
编辑:
这说明了一切。FrameworkElement 的width 属性是Double 类型的属性,而grid 列的width 属性则另当别论。网格的列由 ColumnDefinition 对象的集合定义,它们的 width 属性是 GridLength 类型,而不是双精度类型,因为网格列宽可以采用文字数值、自动值和星形值 (*)。然而,这只是好奇,因为 columndefinition 类不是从框架元素派生的,因此它的属性是不可绑定的。你想做的事情根本不可能。
您可以在代码中执行此操作,如此问题中所述。如果您坚持使用绑定,您可以尝试以下解决方法:
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Width="{Binding mywidth}" Grid.Column=1 >
</Grid>
将列定义为自动宽度,然后在该列中放置一个元素并将该元素宽度绑定到您的属性。宽度设置为 Auto 的列具有其内容的宽度,因此您可以通过操纵这些内容的宽度来操纵该列的宽度。
希望这对您有所帮助。