0

での caliburn バインディングの設定には、既知の問題がありますDataTemplates

この回答でEisenbergEffect は、データ テンプレートをユーザー コントロールに抽出することを提案しています。

これはどのように達成できますか?

私のユーザーコントロールにはDataTemplates、これらの問題がたくさんあり、遭遇しました。Conventions適用されず、「クラシック」を使用する必要がありますBinding

でコントロール全体を抽出することしか想像できませんでしたDataTemplate。これにより、多くの小さなコントロールが得られますが、DataTemplate.

XAML の例を次に示します。

<Grid>
    <Grid.Resources />
    <Grid.RowDefinitions>
        <RowDefinition Height="10*" />
        <RowDefinition Height="2*" />
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*" />
    </Grid.ColumnDefinitions>

    <Border HorizontalAlignment="Stretch"
            BorderBrush="Transparent"
            BorderThickness="0">
        <ScrollViewer HorizontalContentAlignment="Stretch"
                      Background="Yellow"
                      BorderBrush="Transparent"
                      BorderThickness="0"
                      CanContentScroll="True"
                      HorizontalScrollBarVisibility="Auto"
                      VerticalScrollBarVisibility="Auto">
              <!-- Conventions work here -->
            <ListView x:Name="Computers" 
                      HorizontalContentAlignment="Stretch"
                      Background="Red"
                      BorderThickness="0">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Border Background="Transparent"
                                BorderBrush="Transparent"
                                BorderThickness="0">
                            <ListView HorizontalContentAlignment="Stretch"
                                      Background="Black"
                                      ItemsSource="{Binding HardwareComponents}">  <!-- Conventions to not work here -->
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <Border Background="Aquamarine"
                                                BorderBrush="DarkGray"
                                                BorderThickness="1">
                                            <Grid Background="Transparent" cal:Message.Attach="[Event MouseDown] = [Action Expand($dataContext)]" >
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="20" />
                                                </Grid.RowDefinitions>
                                                <Border BorderBrush="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                        <!-- Even more DataTemplates come here -->
                                                </Border>
                                            </Grid>
                                        </Border>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </Border>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </ScrollViewer>
    </Border>
</Grid>
4

0 に答える 0