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
имущество.