сделать комбинированный ящик WPF с флажком пользовательского управления с классом generi c - PullRequest
0 голосов
/ 31 января 2020

Я нашел много решений, но я борюсь с привязкой generi c class с user-control И в ViewModel. Я хочу сделать ComboBox с checkbox. В этом ComboBox будет использоваться generi c class Так что я могу повторно использовать этот user-control во всем приложении.

Мой вопрос: как связать этот generi c class с моим фактическим View.xaml файл для ComboBox.

Это мой user-control

<base:CheckedComboBox>
    <ComboBox.Resources>
        <Style TargetType="ComboBoxItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ComboBoxItem">
                        <base:BaseCheckBox HorizontalAlignment="Center" Content="{Binding FilterDropDownItemModel.Title}" ToolTip="{Binding FilterDropDownItemModel.ToolTip}" IsChecked="{Binding FilterDropDownItemModel.IsSelected,UpdateSourceTrigger=PropertyChanged}">
                        </base:BaseCheckBox>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ComboBox.Resources>

</base:CheckedComboBox>

Это мой универсальный c class модель

public abstract class DropDownModel<T> : BaseModel
{
    private T _mysummary;
    public T MySummary
    {
        get { return _mysummary; }
        set
        {
            _mysummary = value;
            RaisePropertyChanged();
        }
    }

    private bool _isSelected;
    public bool IsSelected
    {
        get { return _isSelected; }
        set
        {
            if (_isSelected != value)
            {
                _isSelected = value;
                RaisePropertyChanged();
            }
        }
    }

    /// <summary>
    /// Title
    /// </summary>
    public abstract string Title
    {
        get;
    }

    public abstract string ToolTip
    {
        get;
    }
  }
}

1 Ответ

0 голосов
/ 31 января 2020

Все ваши привязки неверны, это должно выглядеть примерно так:

    <Style TargetType="ComboBoxItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ComboBoxItem">
                    <base:BaseCheckBox HorizontalAlignment="Center" 
                                       Content="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext.FilterDropDownItemModel.Title}" ToolTip="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext.FilterDropDownItemModel.ToolTip}" IsChecked="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext.FilterDropDownItemModel.IsSelected}">
                </base:BaseCheckBox>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...