ورود

View Full Version : سوال: استفاده از FilterDescriptors در MVVM



iranrose63
یک شنبه 05 تیر 1390, 10:45 صبح
سلام
من از RadDataFilter در برنامم MVVM استفاده میکنم چون FilterDescriptors یه خاصیت ReadOnly بود و قابل بایند شدن در xaml نبود من یه کلاس جدید ایجاد کردم با یه خاصیت جدید که قابل بایند کردن باشه و از اون تو برنامم استفاده می کنم ولی با وجود اینکه این خاصیت را با FilterDescriptors بایند کردم ولی با تغییر FilterDescriptors خاصیت جدید من تغییر نمیکنه . در ضمن دو رویداد dataFilter.FilterDescriptors.CollectionChanged و dataFilter.FilterDescriptors.ItemChanged هم raise نمیشند در نتیجه مقدار خاصیت جدید که من ایجاد کردم تغییر نمیکنه باید چیکار کنم تا مشکلم حل بشه ؟

البته اگر دوستان نظر دیگه ای به جای ایجاد کلاس جدید دارند تا من بتونم از FilterDescriptors در MVVM استفاده کنم ممنون میشم راهنماییم کنید

اینم کد کلاس من :



class DataFilter:RadDataFilter
{
public DataFilter():base()
{
Binding bind= new Binding()
{
Source = this,
Path = new PropertyPath("FilterDescriptors"),
Mode = BindingMode.OneWay,
UpdateSourceTrigger=UpdateSourceTrigger.PropertyCh anged
};
this.SetBinding(DataFilter.FilterDescriptorPropert y, bind);
this.FilterDescriptors.CollectionChanged += new System.Collections.Specialized.NotifyCollectionCha ngedEventHandler(FilterDescriptors_CollectionChang ed);
this.FilterDescriptors.ItemChanged += new EventHandler<ItemChangedEventArgs<IFilterDescriptor>>(FilterDescriptors_ItemChanged);
}

void FilterDescriptors_ItemChanged(object sender, ItemChangedEventArgs<IFilterDescriptor> e)
{
this.FilterDescriptor = this.FilterDescriptors;
}

void FilterDescriptors_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionCha ngedEventArgs e)
{
this.FilterDescriptor = this.FilterDescriptors;
}

public static readonly DependencyProperty FilterDescriptorProperty = DependencyProperty.Register("FilterDescriptor", typeof(CompositeFilterDescriptorCollection), typeof(DataFilter), new FrameworkPropertyMetadata());

public CompositeFilterDescriptorCollection FilterDescriptor
{
get { return GetValue(FilterDescriptorProperty) as CompositeFilterDescriptorCollection; }

set { SetValue(FilterDescriptorProperty, value); }
}
}

iranrose63
سه شنبه 07 تیر 1390, 10:57 صبح
چی شد دوستان کسی نظری نداره ؟