4

タイミング システムから送信された開始情報のリストを表示するために使用している Itemscontrol があります。

レーン番号が表示されていない場合(nullまたは空白の場合)、一連のレーン情報の表示を「オフにする」/停止し、タイマーが情報を送信してレーンをオンに戻す場合は、再びデータ。

タイマーは常に情報を送信し、レーン番号以外のすべてが再び表示されるため、すべてを削除するように設定することはできません。

条件付きでアイテムの表示/非表示を切り替えることはできますか?

現在起きていること

Lanes
1 ------
2 ------
  ------ <- other info remains
4 ------

私がしたいこと

Lanes
1 ------
2 ------

4 ------

これが私のitemscontrolコードのサンプルです

<ItemsControl ItemsSource="{Binding CHeat.SwimList}" Margin="10,0" HorizontalAlignment="Left" VerticalAlignment="Top">
            <ItemsControl.Template>
                <ControlTemplate TargetType="ItemsControl">
                    <StackPanel>
                        <StackPanel Orientation="Horizontal">
                            <Label Content="Lane" />
                            <Label Content="Pos" />
                            <Label Content="Swimmer" />
                            <Label Content="Club" />
                            <Label Content="Time" />
                        </StackPanel>
                        <ItemsPresenter/>
                    </StackPanel>
                </ControlTemplate>
            </ItemsControl.Template>

            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="35" />
                                <ColumnDefinition Width="30" />
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition Width="50" />
                                <ColumnDefinition Width="80" />
                            </Grid.ColumnDefinitions>
                            <Label Grid.Column="0" Content="{Binding LaneNumber}" />
                            <Label Grid.Column="1" Content="{Binding Position}" />
                            <Label Grid.Column="2" Content="{Binding Swimmer}" />
                            <Label Grid.Column="3" Content="{Binding Club}" />
                            <Label Grid.Column="4" Content="{Binding Time}" />
                        </Grid>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

Content = ""LaneNumber に基づいて他のデータを設定できる方法があれば、バインディングを元に戻すことができるので、うまくいくと思います。

私はWPFにかなり慣れていないので、詳細を教えていただけると助かります。

4

1 に答える 1

2

Visibility物件を利用してみませんか?MVVM またはコード ビハインドでパブリック プロパティを作成し、それを非表示にする要素にバインドするだけです。

 <StackPanel Visibility="{Binding ShowElement, Converter={StaticResource VisibilityConverter}, Mode=TwoWay}">

ShowElement のブール値を設定することで、StackPanel を簡単に表示または非表示にすることができます。

于 2013-08-19T06:44:48.513 に答える