2009-09-11 4 views
1

У меня есть сомнения, обязывающее сценарий textbox.he, как this.I хава набора данных говорят,Wpf Связывание Filteration

DataTable dt=new DataTable(); 
dt.TableName = "table"; 
dt.Columns.Add("mode", typeof(int)); 
dt.Columns.Add("value", typeof(int)); 
DataRow dr = dt.NewRow(); 
dr["mode"] = 1; 
dr["value"] = 1000; 
dt.Rows.Add(dr); 
dr = dt.NewRow(); 
dr["mode"] = 2; 
dr["value"] = 2000; 
dt.Rows.Add(dr); 
DataSet ds = new DataSet(); 
ds.Tables.Add(dt); 
this.DataContext = ds; 

окно связано с этим dataset.I есть текстовое поле в моем окне, и я хочу связать его с строкой с mode = 1, чтобы я мог показать это значение строк в текстовом свойстве моего текстового поля.

Как я могу применить эту привязку ..?

Любой входной сигнал будет очень полезным

ответ

1

DataSets немного родовое, чтобы использовать для связывания в WPF. Его обычно проще использовать шаблон M-V-VM, где у вас есть модели, которые являются объектами INotifyPropertyChanged или DependencyObjects, с которыми связывается ваш пользовательский интерфейс.

Я не уверен, если вы говорите о изменить то, что вещи, которые связаны с в зависимости от «режима» или если вы просто хотите фильтровать на «режиме.»

В первом случае вам необходимо использовать DataTrigger для стиля, чтобы изменить ContentTemplate, который вы используете, в зависимости от значения вашего поля режима. Это НЕ простая концепция для начинающего или промежуточного пользователя.

This is a decent blog post with instructions on how to accomplish this. Опять же, это довольно запутанно, и когда он не работает, его иногда трудно устранить.

Во втором случае вам будет лучше обслуживать настройку DataContext на тип, содержащий несколько данных, которые предварительно фильтруются. Фильтрация не является заданием для пользовательского интерфейса, это задание для кода. Это может выглядеть примерно так:

public class MyDataContext 
{ 
    public DataTable ModeOne {get;set;} 
    public DataTable ModeTwo {get;set;} 
} 

или, возможно,

public class MyDataContext 
{ 
    public Dictionary<int, DataTable> TableByMode {get;set;} 
} 

где бы связывать как это

<ItemsControl Content="{Binding TableByMode[1]}"> 
Смежные вопросы