3

deleteという名前のボタンがあります。特定の条件が満たされたときだけ見えるようにしたいのですが、どうすればできますか??

ボタンを作成するための XAML コードは次のとおりです。

<Button x:Name="DeleteButton" Content="Delete" HorizontalAlignment="Left" Height="64" Margin="74,579,0,-9" VerticalAlignment="Top" Width="314" FontSize="24"/>
4

2 に答える 2

9

Visibility プロパティがあります。

あなたはそれを行ういくつかの方法があります:

  1. コードビハインドでは、次のことを行う必要があります。

    if (condition)
    {
        DeleteButton.Visibility = Visibility.Visible; //Also possible to Collapse (hide).
    }
    

    上記のコードは、ボタンをそれぞれ非表示および表示にするのに役立ちます。

    注:これはあまり好ましくありません。動的ではなく、重複や不要なコードが発生する可能性があります。

  2. より良い方法とより動的な方法は次のとおりです。

    次のように、bool プロパティを作成し、可視性ボタンをそれにバインドできます。

    bool IsVisible { get; set; } //Code behind
    

    そしてxamlで:

    <!-- Pay attention: The Converter is still not written, follow next steps -->
    <Button x:Name="DeleteButton" 
            Content="Delete"
            HorizontalAlignment="Left" Height="64" Margin="74,579,0,-9" 
            VerticalAlignment="Top" Width="314" FontSize="24" 
            Visibility="{Binding IsVisible, 
                         Converter={StaticResource BooleanToVisibilityConverter}}" />
    

    コンバーター:

    public class BooleanToVisibilityConverter : IValueConverter
    {
        /// <summary>
        /// Converts a value.
        /// </summary>
        /// <param name="value">The value produced by the binding source.</param>
        /// <param name="targetType">The type of the binding target property.</param>
        /// <param name="parameter">The converter parameter to use.</param>
        /// <param name="culture">The culture to use in the converter.</param>
        /// <returns>A converted value. Returns Visible if the value is true; otherwise, collapsed.</returns>
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (bool)value ? Visibility.Visible : Visibility.Collapsed;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter,CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    また、xaml のリソースにコンバーターを追加して、StaticResource でアクセスできるようにする必要があります。

    <Application
    x:Class="UI.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:converters="using:UI.Converters">
    
    <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    

    次に、必要に応じて IsVisible プロパティを変更します。true の場合は Visible にバインドされ、false の場合は折りたたまれます。

    if (condition)
    {
        IsVisible = true;
    }
    

    詳細については、バインディングコンバーターを学ぶ必要があります。

于 2013-10-25T06:43:01.847 に答える
3

XAMLまた、バインディングを使用して行うこともできます。

XAML

<UserControl.Resources>
   <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</UserControl.Resources>

次に、コントロールで sth を次のようにします。

Visibility="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}"

AndIsVisibleは のboolプロパティですViewModel

于 2013-10-25T06:54:18.267 に答える