0

谁能告诉我为什么这不起作用?

<Grid x:Name="myGrid">
    <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition />
    </Grid.ColumnDefinitions>
      <TextBox VerticalAlignment="Center" Grid.Column="0">Gangnam</TextBox>
      <TextBox VerticalAlignment="Center" Text="{Binding}" Grid.Column="1" />
</Grid>

在代码隐藏中,我设置了一个datacontextfor myGrid。我还计划制作一个datatemplate来处理visualisation.

现在,我希望textbox包含typenamemy 的class,但是有一个xml解析异常(“双向绑定需要 Path 或XPath.”)

这就是我datacontext在控件上设置的方式:

public LeftColumn()
    {
      InitializeComponent();

      LeftColumnData dataObjectLeft = new LeftColumnData();
      myGrid.DataContext = dataObjectLeft;
    }
4

1 回答 1

0

因为 DataContext 是 typeLeftColumnData并且 TextBox 默认使用 Two-Way 绑定,所以运行时不可能弄清楚String与您的数据类型之间的转换。

您可以尝试将绑定设置为OneWay

<TextBox VerticalAlignment="Center" Text="{Binding, Mode=OneWay}" Grid.Column="1" />

或实现一个IValueConverter来处理转换:

<TextBox VerticalAlignment="Center" Text="{Binding, Converter={My:Converter}}" Grid.Column="1" />
于 2013-01-10T15:17:48.853 回答