我是C#/ WPF的新手。有一个定义了一个按钮的视图,当视图初始化时,按钮将显示从DataContext(viewmodel)获得的一组原因代码,一旦点击任何按钮,其上的代码将被保存并传递给下一个处理。
问:按钮上的文字是完全空的,但是可以捕获点击的代码,那么问题是关于绑定的?感谢。
XAML:
<thead></thead>
C#上的代码:
<Button x:Name="btnReason" Command="{Binding DataContext.SelectCommand, RelativeSource={RelativeSource AncestorType=v:View, Mode=FindAncestor}}" CommandParameter="{Binding}" Width="190" Height="190" >
<Border Background="Transparent">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock x:Name="Reason" Grid.Row="0" Text="{Binding ?????}" TextWrapping="Wrap" />
</Grid>
</Border>
</Button>
答案 0 :(得分:1)
如果我正确理解了您的问题,那么text
中TextBlock
的财产SelectedName
应该绑定到CommandParameter
。
问题是您的DataContext
绑定了{Binding}
。这就是空Names
语句的界限。这意味着您的命令处理程序始终在空检查后返回。
我还建议您将IEnumerable<string>
职业从ObservableCollection<string>
更改为iso_8601
。
ObservableCollection会在内部任何添加或删除项目时引发事件,WPF组件可以绑定到这些事件。