MahApps.Metro SplitButton SelectedItem Привязка данных

Вид это:

  <Controls:SplitButton Margin="217,409.75,56,185" Name="SplitButton1"
                              Width="384"
                              HorizontalAlignment="Center"
                              HorizontalContentAlignment="Center"
                              VerticalContentAlignment="Center"
                              Orientation="Vertical" 
                              DisplayMemberPath ="UserName"
                              SelectedItem="{Binding SelectedUser,UpdateSourceTrigger=PropertyChanged,Mode=OneWay}"
                              ItemsSource="{Binding Users, Mode=TwoWay}" />

ViewModel это:

        public string SelectedUser 
    {
        get { return selectedUser; }
        set
        {
            selectedUser = value;
            RaisePropertyChanged("SelectedUser");
        }
    }

    public ObservableCollection<UserModel> Users
    {
        get
        {
            return users;
        }
        set
        {
            users = value;
        }
    }

Модель это:

public class UserModel
{
    private int id;
    private string userName;
    private int groupId;
    private string deviceMacAddress;

    public int Id { get; set; }
    public string UserName { get; set; }
    public int GroupId { get; set; }
    public string DeviceMacAddress { get; set; }
}

Я использую приведенный выше код в xaml, чтобы связать selectedItem в кнопке split для ViewModel->property- SelectedUser.
Но это не работает. кто-нибудь знает почему?

SelectedUser возвращается как имя модели (PresentationLayer.Model.UserModel) вместо свойства UserName.

1 ответ

Решение

Потому что ваша привязка OneWay по вашему определению.

Установите привязку к TwoWay,

<Controls:SplitButton SelectedItem="{Binding SelectedUser,Mode=TwoWay}"/>

И нет необходимости устанавливать UpdateSourceTrigger=PropertyChanged в этом случае, потому что UpdateSourceTrigger является PropertyChanged по умолчанию для SelectedItem имущество.

Другие вопросы по тегам