1

コンテキスト: プログレス バーを表示する 1 つの TemplateColumn を持つデータグリッドを持つ C# 4.0 WPF アプリケーション。

条件に基づいて特定のアイテムの進行状況バーのみを表示するようにグリッドを取得するにはどうすればよいですか?

おそらく、イベントをリッスンしてセルを非表示にする/可視性をfalseに設定することがオプションになるでしょう。

これが現在の外観です (進行状況バーはすべてのアイテムに表示されます)。

<UserControl.Resources>
    <DataTemplate x:Key="PotentialDataTemplate">
        <Grid Width="70">
            <ProgressBar
                Height="12"
                VerticalAlignment="Center"
                Value="{Binding Path=Potential, Mode=OneWay}" />
        </Grid>
    </DataTemplate>
</UserControl.Resources>

<DataGrid x:Name="dataGrid"
        ItemsSource="{Binding Path=Items}"
        AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn
            Header="{Binding Source={x:Static text:TextBindingProvider.Instance}, Path=CompendiumHeaderPotential}"
            Width="Auto"
            MinWidth="80"
            CellTemplate="{StaticResource PotentialDataTemplate}"
            IsReadOnly="true"
            SortMemberPath="Potential" />
    </DataGrid.Columns>
</DataGrid>

4

2 に答える 2

2

答えが見つかったので、Visibility 属性を追加して、それを ViewModel の条件付きロジックにバインドするだけです。

    Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay}

そう:

    <Grid Width="70">
        <ProgressBar
            Height="12"
            VerticalAlignment="Center"
            Value="{Binding Path=Potential, Mode=OneWay}" 

            Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay}" />

    </Grid>
于 2011-04-27T15:23:28.883 に答える
2

可視性の条件に応じて、いくつかのオプションがあります。「IsPotentialVisible」などの別のプロパティがある場合は、BooleanToVisibilityConverter を使用して、これをプログレスバーの Visibility プロパティにバインドできます。

次に、「Potential == 0 の場合は非表示にする」などの単純な条件であれば、この条件を処理する DataTrigger を作成できます。

それ以外の場合は、必要な入力プロパティ/パラメーターに基づいて可視性を吐き出すカスタム コンバーターを作成することもできます。

于 2011-04-27T15:15:15.700 に答える