سؤال

ولدي مجموعة من ثلاثة أزرار. اعتمادا على زر التي الإذاعة محددا، وأريد أن disaply واحد من ثلاثة عناصر تحكم - على النص، قائمة منسدلة، أو زر. كيف يمكنني عرض الضوابط بناء على نتيجة زر الراديو المحددة؟

هل كانت مفيدة؟

المحلول

ويمكنك ربط تسليط الضوء على السيطرة على الممتلكات IsChecked من زر راديو، وذلك باستخدام BooleanToVisibilityConverter:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <BooleanToVisibilityConverter x:Key="convVisibility"/>
  </Page.Resources>
  <Grid>
    <StackPanel Orientation="Vertical">
      <RadioButton Name="radioButton1" GroupName="group1">Control1</RadioButton>
      <RadioButton Name="radioButton2" GroupName="group1">Control2</RadioButton>
      <RadioButton Name="radioButton3" GroupName="group1">Control3</RadioButton>
      <Grid>
        <Button Visibility="{Binding IsChecked, ElementName=radioButton1, Converter={StaticResource convVisibility}}">1. Button</Button>
        <TextBlock Visibility="{Binding IsChecked, ElementName=radioButton2, Converter={StaticResource convVisibility}}">2. TextBlock</TextBlock>
        <TextBox Visibility="{Binding IsChecked, ElementName=radioButton3, Converter={StaticResource convVisibility}}">3. TextBox</TextBox>
      </Grid>
    </StackPanel>
  </Grid>
</Page>

وتحرير:

<اقتباس فقرة>   

وهذا الحلول يعمل كبيرة وانها بسيطة لتنفيذ. هل هناك أي حال يمكنني منع عناصر التحكم من يجري مخبأة في وضع التصميم؟

وأنا لا أعرف عن المصممين الآخرين (مزيج على سبيل المثال)، ولكن في استوديو مصمم البصرية الضوابط مخفية أبدا ...

وعلى أي حال، هل يمكن تنفيذ تحويل الخاص بك، والذي سيعود دائما مرئي في وضع التصميم. لسبب غامض وختم الطبقة BooleanToVisibilityConverter، لذلك لا يمكن أن ترث منه. يمكنك تفويض التحويل إلى BooleanToVisibilityConverter بدلا من ذلك، إذا كنت لا ترغب في إعادة كتابة منطق التحويل:

public class MyBooleanToVisibilityConverter : IValueConverter
{
    private BooleanToVisibilityConverter _converter = new BooleanToVisibilityConverter();
    private DependencyObject _dummy = new DependencyObject();

    private bool DesignMode
    {
        get
        {
            return DesignerProperties.GetIsInDesignMode(_dummy);
        }
    }

    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (DesignMode)
            return Visibility.Visible;
        else
            return _converter.Convert(value, targetType, parameter, culture);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return _converter.ConvertBack(value, targetType, parameter, culture);
    }

    #endregion
}

نصائح أخرى

لإبقاء عنصر مرئية أثناء وقت التصميم يمكنك إضافة FallbackValue من true مربع الاختيار على النحو التالي:

<RadioButton x:Name="cbxEmail" Content="Email Details" IsEnabled="{Binding IsEmail, FallbackValue=true}" IsChecked="{Binding IsEmail, Mode=OneWay, FallbackValue=true}"
                                Grid.Column="2"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top