【问题标题】:BindableCollection in ContentPresenterContentPresenter 中的 BindableCollection
【发布时间】:2019-08-14 14:49:37
【问题描述】:

我正在使用 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)。这可能是因为没有发生绑定。

【问题讨论】:

  • 您是否尝试过明确地编写 WorkLength 和 WorkWidth 的绑定,我不确定 caliburn 在这种情况下是否能胜任?例如,如果您在 github 中有项目,那么测试它会很容易......

标签: c# wpf mvvm caliburn.micro


【解决方案1】:

问题在于任务过于复杂。一个带有 BindingList 的简单 ListBox 解决了我的问题......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多