0

在 xaml 中,with 可以设置为

<UserControl Width="100" />

我想在 VM 中设置宽度并将其绑定到 Xaml 中的宽度,例如

<UserControl Width="{Binding mywidth}" />

在 VM 中,将 mywidth 定义为整数,如

public int mywidth {
  get {
      return 100;
  }
}

但它不起作用。宽度绑定应该设置什么样的类型?

4

1 回答 1

0

我没有使用 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 的列具有其内容的宽度,因此您可以通过操纵这些内容的宽度来操纵该列的宽度。

希望这对您有所帮助。

于 2013-08-14T18:34:10.607 回答