c# - ContentPresenter 中的 BindableCollection
问题描述
我正在使用 ContentPresenter(如 MVC 中的部分视图)在 UserControl 中显示(子)视图的简单列表,但数据未绑定。
尝试了数据绑定的详细版本,也是一个衬垫,但没有数据绑定到显示器。
UserControl 有一个名为 WorkPieces 的属性,它是 WorkPieceViewModel 的 BindableCollection,并在启动时实例化为具有默认值 Width:0、Length:0 和一个 Designator(罗马数字)。UserControl 视图的相关部分:
<ContentPresenter Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="2" x:Name="WorkPieces" HorizontalAlignment="Stretch">
<ContentPresenter.ContentTemplate>
<DataTemplate DataType="{x:Type models:WorkPieceViewModel}">
<local:WorkPieceView />
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
WorkPieceView:(也是一个用户控件)
<DockPanel HorizontalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" x:Name="WorkPieceId" Visibility="Hidden" />
<TextBlock Grid.Row="0" Grid.Column="1" x:Name="Designator" Text="{Binding Designator}" MinWidth="15"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="{x:Static lang:Resources.Txt_W}" />
<TextBox Grid.Row="0" Grid.Column="3" x:Name="WorkWidth" MinWidth="50"/>
<TextBlock Grid.Row="0" Grid.Column="4" Text=" x " />
<TextBlock Grid.Row="0" Grid.Column="5" Text="{x:Static lang:Resources.Txt_L}" />
<TextBox Grid.Row="0" Grid.Column="6" x:Name="WorkLength" MinWidth="50"/>
<Button Grid.Row="0" Grid.Column="7" Margin="5">
<Image Source ="/Images/plus-sign.png" Height="16" Width="16" />
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AddNewWorkPiece" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Grid.Row="0" Grid.Column="8" Margin="5">
<Image Source ="/Images/minus-sign.png" Height="16" Width="16" />
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="RemoveWorkPiece">
<cal:Parameter Value="{Binding ElementName=Id}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</DockPanel>
主要问题是未绑定宽度和长度值。我还有其他一些问题,例如 strech 不起作用 - 但这只是 UI,没有显示指定器,尽管它的值为“I”(罗马 1)。这可能是因为没有发生绑定。
解决方案
问题是任务过于复杂。一个带有 BindingList 的简单 ListBox 解决了我的问题......
推荐阅读
- mongodb - MongoDB 的估计计数查询有多准确?
- angular - 无法在angular4中注入依赖注入
- vue.js - 带有 v-model 的与框架无关的自定义元素不起作用
- rails-activestorage - 附加主动存储退货?在控制台中为 true,但在 Rails 服务器上返回 false
- python - 在 Flask 应用程序中动态显示 Python 变量
- c# - 如何从 ObservableCollection 中删除项目
- r - 如何在`ltm`包中使用`grm`?
- java - 删除数据库条目后刷新列表视图
- python - 如何在 python 中运行的 vba 代码中捕获异常
- android - admob 广告未能加载:3