|
Binding SelectedIteems (DataGrid)
|
|||
---|---|---|---|
#18+
Коллеги, подскажите плиз Задача очень простая но решить не могу.... Есть 2 грида, при выборе в первом гриде строк, эти строки должны отображаться во втором гриде. В таком виде задача решается просто, однако мне нужно чтобы во вором гриде отображались только определенные столбцы. Иными словами нужно сделать биндинг не всех столбцов первого грида а только нужых. Как это сделать? class DataObject { string _FirstField; string _SecondField; public DataObject(string firstField, string secondField) { _FirstField = firstField; _SecondField = secondField; } public string FirstField { get { return _FirstField; } set { _FirstField = value; } } public string SecondField { get { return _SecondField; } set { _SecondField = value; } } } class Collection : ObservableCollection<DataObject> {} public MainWindow() { InitializeComponent(); //Добавляем значения в коллецию уже созданную в XAML NS.Collection coll = (NS.Collection)this.FindResource("DataCollection"); coll.Add(new NS.DataObject("value1", "value2")); coll.Add(new NS.DataObject("value3", "value4")); } <Window xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml" xmlns:toolkit=" http://schemas.microsoft.com/wpf/2008/toolkit" xmlns:data="clr-namespace:clrnamespace.NS" x:Class="clrnamespace.MainWindow" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <data:Collection x:Key="DataCollection"/> <CollectionViewSource x:Key="cvs" Source="{StaticResource ResourceKey=DataCollection}" /> </Window.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="268*"/> <ColumnDefinition Width="249*"/> </Grid.ColumnDefinitions> <toolkit:DataGrid x:Name="dataGrid" Margin="10,10,8,10" ItemsSource="{Binding Mode=OneWay, Source={StaticResource cvs}}" AutoGenerateColumns="False"> <toolkit:DataGrid.Columns> <toolkit:DataGridTextColumn Binding="{Binding FirstField}" Header="Поле 1"/> <toolkit:DataGridTextColumn Binding="{Binding SecondField}" Header="Поле 2"/> </toolkit:DataGrid.Columns> </toolkit:DataGrid> <toolkit:DataGrid Margin="11,10,10,10" Grid.Column="1" ItemsSource="{Binding SelectedItems, ElementName=dataGrid}"/> </Grid> </Window> ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:22 |
|
Binding SelectedIteems (DataGrid)
|
|||
---|---|---|---|
#18+
Stratus, Самое простое решение - делать биндинг на коллекцию колумнов во втором гриде на колумны первого грида. Цеплять конвертор и в нем делать фильтрацию - Where (Linq) на нужные тебе столбцы. Но я бы либо расширил текущий грид, либо сделал бы аттачпроперти от нового класса - мне кажется так элегантнее было бы. Но первый вариант очень простой и быстрый ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 19:12 |
|
|
start [/forum/topic.php?fid=21&tid=1441358]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 109ms |
0 / 0 |