1

私は WPF を使用していますが、MVVM が WPF で最も一般的に使用されていることがわかりました。プレゼンテーション ロジックを ViewModel に移動し、コード ビハインドを最小限に抑えることをお勧めします。

しかし、しばらくすると、より多くのロジックを視野に入れ、これらの種類のものを視野に入れていることに気付きました(XAML):

1 - 複数の要素から文字列を作成する:

<TextBlock>
    <Run Text="{Binding Prop1}" />
    <!--<Run Combined with string.Format />-->
    <Run Text="," />
    <Run Text="{Binding Prop2}" />
</TextBlock>

2 - 条件付きロジックをデータ トリガーに移動する:

<TextBox>
    <TextBox.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SomeProperty}" Value="value1">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
                <DataTrigger Binding="{Binding SomeProperty}" Value="value2">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Resources>
</TextBox>

3 - ContentControl を、異なるタイプのコンテンツ用の複数のデータ テンプレートと組み合わせて使用​​する:

<UserControl.Resources>
    <DataTemplate x:Key="Template1" >
        <ContentControl HorizontalContentAlignment="Stretch" Content="{Binding Item}">
            <ContentControl.Resources>
                <Style TargetType="ContentControl">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding HasAnyItem}" Value="True">
                            <Setter Property="ContentTemplate" Value="{DynamicResource Template2}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding HasAnyItem}" Value="False">
                            <Setter Property="ContentTemplate" Value="{DynamicResource Template1}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Resources>
        </ContentControl>
    </DataTemplate>

    <DataTemplate x:Key="Template2" >
        ...
    </DataTemplate>
<UserControl.Resources>
...
<ContentControl ContentTemplate="{StaticResource Template1}"  Content="{Binding}"/>

このリストは続きますが、私が話していることの種類についての一般的な考えを理解していると思います. これらの機能のいくつかは、どういうわけか WPF の美しさであることを認識しています。

しかし、保守性と柔軟性に関して言えば、ロジック処理のより良い方法はありますか? それは私のUIを十分にスマートにしますか?これはWindowsフォーム時代のアンチパターンでしたか?

4

2 に答える 2