1

私はwpfでこのようなものを作りたくないここに画像の説明を入力

だから私はこのxamlを試します:

 <StackPanel HorizontalAlignment="Left">
        <ListView ItemsSource="{Binding Path=StateItems}">
            <ListView.ItemTemplate>
                <DataTemplate DataType="vm:StateItem">
                    <StackPanel Orientation="Horizontal">
                        <Image>
                            <Image.Style>
                                <Style>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding Path=Active}" Value="True">
                                            <Setter Property="Image.Source" Value="{StaticResource Ellipse}" />
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding Path=Active}" Value="False">
                                            <Setter Property="Image.Source" Value="{StaticResource EllipseEmpty}" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Image.Style>
                        </Image>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>

そして、これはviewModelで:

  public List<StateItem> StateItems
    {
        get
        {
            var items = new StateItem[m_InstallationSteps.Steps.Count];
            items[m_InstallationSteps.ActiveStepIndex].Active = true;
            return items.ToList();
        }
    } 
public class StateItem
{
    public bool Active { get; set; }
}

しかし、それは表示されません。出現させる方法は?

編集:バインディングが機能しないようです

EDIT2:通知で変更しようとしましたが、役に立ちませんでした

  public class StateItem : INotifyPropertyChanged
{
    private bool m_Active;

    public bool Active
    {
        get { return m_Active; }
        set
        {
            m_Active = value;
            OnPropertyChanged("Active");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}
4

1 に答える 1

0

私はばかだった))問題は items[m_InstallationSteps.ActiveStepIndex].Active = true;

null でしたが、wpf は例外をスローしませんでした。

于 2013-08-09T12:41:52.050 に答える