第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WPF 中不調(diào)用 ValueConverter 轉(zhuǎn)換方法

WPF 中不調(diào)用 ValueConverter 轉(zhuǎn)換方法

C#
一只斗牛犬 2023-09-16 16:02:34
我正在嘗試使用 ValueConverter 。所有綁定(包括 DataGrid 內(nèi)容)都正常工作,但我無法將值轉(zhuǎn)換器應(yīng)用于 DataGridColumns,也不能應(yīng)用于其他字段,因為它的方法根本沒有被調(diào)用??赡苡袉栴}的地方可能是我們使用Reactive UI作為 MVVM 框架,因此它可能是問題的根源。我正在通過響應(yīng)式 UI 綁定設(shè)置 DataGrid 的項目源。但我嘗試在視圖上設(shè)置類似的內(nèi)容: public partial class OrderTimeSheetUserControl : OrderTimeSheetBaseUserControl    {        public OrderTimeSheetUserControl()        {            this.DataContext = ViewModel; // Set data context in case it may have helped (but it did not)            InitializeComponent();        }    }PS:我嘗試過內(nèi)置的 BooleanToVisibilityConverter,以及通過繼承 MarkupExtension 類和略有不同的使用方法編寫我的轉(zhuǎn)換器。(帶有 MarkupExtension 的 IValueConverter)值轉(zhuǎn)換器如下:  [ValueConversion(typeof(bool), typeof(Visibility))]public class BoolToCollapsedVisibilityValueConverter : IValueConverter{    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)    {        if (value is bool == false)        {            throw new NotSupportedException($"Conversion from {value.GetType().Name} is not supported by {nameof(BoolToCollapsedVisibilityValueConverter)}.");        }        var boolValue = (bool) value;        return boolValue ? Visibility.Visible : Visibility.Collapsed;    }    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)    {        throw new NotImplementedException();    }}它在 XAML 頁面中的用法: <userControls:OrderTimeSheetBaseUserControl.Resources> <wpfValueConverters:BoolToCollapsedVisibilityValueConverter x:Key="Conv" /> <DataGrid>     <DataGrid.Columns>         <DataGridComboBoxColumn Visibility="{Binding BackPayCategoryVisible, Converter={StaticResource Conv}}" Header="Backpay Cat."/>     </DataGrid.Columns> </DataGrid>xaml.cs 中 DataGrid 的 ItemsSource 的響應(yīng)式 UI 綁定:   this.OneWayBind(ViewModel,                    viewModel => viewModel.Employees,                    view => view.PersonsInOrderDataGrid.ItemsSource)                .DisposeWith(disposable);因此,所有屬性都已正確綁定,但值轉(zhuǎn)換器不起作用。
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊

默認(rèn)情況下ADataGridColumn不會繼承任何內(nèi)容DataContext,因此您的綁定會失敗,這就是轉(zhuǎn)換器從未被調(diào)用的原因。這與 ReactiveUI 無關(guān)。


public class BindingProxy : Freezable

{

? ? protected override Freezable CreateInstanceCore()

? ? {

? ? ? ? return new BindingProxy();

? ? }


? ? public object Data

? ? {

? ? ? ? get { return (object)GetValue(DataProperty); }

? ? ? ? set { SetValue(DataProperty, value); }

? ? }


? ? public static readonly DependencyProperty DataProperty =

? ? ? ? DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));

}

XAML:


<DataGrid.Resources>

? ? <local:BindingProxy x:Key="proxy" Data="{Binding}" />

</DataGrid.Resources>

...

<DataGridTextColumn Header="Backpay Cat." Binding="{Binding Price}"

? ? ? ? ? ? ? ? ? ? Visibility="{Binding Data.BackPayCategoryVisible,

? ? ? ? ? ? ? ? ? ? ? ? Converter={StaticResource Conv},

? ? ? ? ? ? ? ? ? ? ? ? Source={StaticResource proxy}}"/>


查看完整回答
反對 回復(fù) 2023-09-16
  • 1 回答
  • 0 關(guān)注
  • 335 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號