簡體   English   中英

嘗試獲取IsEnabled綁定到依賴項屬性

[英]Trying to get IsEnabled to bind to Dependency Property

我知道這段代碼哪里出錯了。 我希望在選中與之關聯的RadioButton時啟用TextBox,然后在選擇其他單選按鈕時希望將其啟用= False。 我創建了ProxyMode依賴項屬性,並根據是否選擇了Proxy更改了getter以獲取其布爾值。 似乎不起作用...任何想法?

// Proxy Host Name
public string Proxy
{
  get { return (string)GetValue(ProxyProperty); }
  set { SetValue(ProxyProperty, value); }
}

public static readonly DependencyProperty ProxyProperty =
       DependencyProperty.Register("Proxy", typeof(string), typeof(ConfigWindowViewModel), new UIPropertyMetadata("[e.g. proxy.mycompany.com]"));

public bool ProxyMode
{
  get { return Proxy == "Proxy"; }
  set { SetValue(ProxyModeProperty, value); }
}

public static readonly DependencyProperty ProxyModeProperty =
       DependencyProperty.Register("ProxyMode", typeof(bool), typeof(ConfigWindowViewModel));

還有XAML

<StackPanel Grid.Column="0" Margin="2">
  <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
    <RadioButton IsChecked="{Binding Path=Mode, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Proxy}"
                  VerticalAlignment="Center"
                  Padding="2,0,10,0">Proxy
    </RadioButton>
    <TextBox Text="{Binding Path=Proxy}" 
             IsEnabled="{Binding Path=ProxyMode}"
             Width="Auto"
             Name="ProxyHostTextBox"
             VerticalAlignment="Center"
             MinWidth="150" 
    />
  </StackPanel>
  <RadioButton IsChecked="{Binding Path=Mode, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Direct}">Direct</RadioButton>
</StackPanel>

根據是否選中了代理RadioButton啟用/禁用文本框的最簡單方法是將TextBox的IsEnabled屬性直接綁定到代理RadioButton的IsChecked屬性。 假設代理RadioButton被命名為“ proxy”:

<TextBox Text="{Binding Path=Proxy}" IsEnabled="{Binding ElementName=proxy, Path=IsChecked}"/>

如果要鏈接RadioButton控件以便一次只能選擇一個,則需要將GroupName屬性設置為兩個控件上的某個屬性(所有鏈接的RadioButton控件都應該相同)。

如果您還有其他問題,請告訴我。

與該問題的第二版一樣:

<RadioButton x:Name="RadioButton2" />
<TextBox IsEnabled="{Binding IsChecked, ElementName=RadioButton2}" />

認為我想出了一種更好的方法來執行此操作-因此問題可能不是一個好問題-以下沒有依賴項屬性的情況似乎不錯

        <StackPanel Grid.Column="0" Margin="2">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                <RadioButton IsChecked="{Binding Path=Mode, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Proxy}" VerticalAlignment="Center" Padding="2,0,10,0" Name="ProxyModeRadioButton">Proxy</RadioButton>
                <TextBox Text="{Binding Path=Proxy}" 
                         IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}"
                         Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" 
                />

            </StackPanel>   
            <RadioButton IsChecked="{Binding Path=Mode, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Direct}">Direct</RadioButton>
        </StackPanel>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM