![](/img/trans.png)
[英]Binding a Dictionary<string, int> to a listview in Xamarin
[英]Binding Dictionary<string, int> to
這是我的枚舉
public enum Works
{
[Description("Admin")]
Admin,
[Description("Chưa Set")]
UnSetted,
[Description("Vào - Ra")]
InOut,
[Description("Ra - Vào")]
OutIn
}
這是我的ViewModel
public class DivisionViewModel : ViewModel<IDivisionView>
{
private IEnumerable<Account> accounts;
private ICommand confirmCommand;
private Dictionary<string, int> works;
....
}
我將枚舉轉換為字典並獲得這樣的帳戶
this.divisionViewModel.Accounts = Root.Accounts;
this.divisionViewModel.Works = Enum.GetValues(typeof(Works))
.Cast<Works>()
.ToDictionary(t => Tools.GetEnumDescription((Works)t), t => (int)t);
這是我的WPF DataGrid
<DataGrid ItemsSource="{Binding Accounts}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding FullName, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
Header="Tên nhân viên" Width="*" ElementStyle="{StaticResource TextCellElementStyle}"
EditingElementStyle="{StaticResource TextCellEditingStyle}"/>
<DataGridComboBoxColumn></DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
如何將this.divisionViewModel.Works
綁定到DataGridComboBoxColumn
? p / s:我希望我的用戶直接在DataGrid上更改Work。 我對SO非常着迷。 但是似乎沒有人談論將Dictionary綁定到DataGridComboBoxColumn。
這是空的原因:
<DataGridComboBoxColumn ItemsSource="{Binding Works.Keys}">
這是因為ComboBox
將當前Account
綁定為ViewModel。 您需要綁定到DataGrid
的ViewModel,這就是RelativeSource
派上用場的地方:
<DataGridComboBoxColumn ItemsSource="{Binding Works.Keys, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}">
注意:在Visual Studio中檢查“輸出”窗口,您會看到綁定錯誤,告訴您它們在Account
找不到名為Work
的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.