bool 속성에 바인딩해야합니다. 컬렉션의 속성 중 하나가 true 일 때만 true입니다. 컬렉션의 모든 항목에 대한 WPF 바인딩
이
은 바인딩 :<tk:BusyIndicator IsBusy="{Binding Tabs, Converter={StaticResource BusyTabsToStateConverter}}">
그리고 뷰 모델을 :
public class MainWindowViewModel : INotifyPropertyChanged
{
private ObservableCollection<Tab> _tabs;
public ObservableCollection<Tab> Tabs
{
get
{ return _tabs; }
set
{
if (value != _tabs)
{
_tabs = value;
NotifyPropertyChanged();
}
}
}
Tab
클래스는 속성 변경 통지가 :이 컨버터는
public class Tab : INotifyPropertyChanged
{
public bool IsBusy { get{...} set{...NotifyPropertyChanged();} }
:
를public class BusyTabsToStateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var tabs = value as ObservableCollection<Tab>;
return tabs.Any(tab => tab.IsBusy);
}
}
Tab.IsBusy
이 변경되면 바인딩 소스가 관찰 가능한 컬렉션에 바인딩되고 IsBusy
속성에 바인딩되어 있지 않기 때문에 문제가 발생합니다.
컬렉션의 항목 중 하나의 IsBusy
속성이 변경되면 알림 트리거를 올바르게 수행 할 수 있습니까?
예제는 훌륭합니다. 이러한 작은 기능에 대한 많은 코드가 있지만 솔루션은 훌륭하게 작동합니다. 감사! – Matthias
@Clemens 나는 당신이 괜찮기를 희망하지만, 나는 당신의 대답과 그것을 사용하기 쉬운 확장 방법으로 (https://stackoverflow.com/a/46606925/526724) 가져 갔다. –
@ 브래들리 당연히 아니지만 좀 더 일반적인 사용법을 달성하기위한 나의 접근법을 참조하십시오. – Clemens