簡體   English   中英

將字符串綁定到 WPF 中按鈕的工具提示

[英]Binding a string to the tooltip of a button in WPF

我在綁定string時遇到問題。 當我最大化我的 window 時,按鈕的工具提示應該變為“最小化”,如果它是正常大小,工具提示將“放大”。

這是我的 XAML 代碼:

<Button Command="{Binding MaxWindowCommand}"
        CommandParameter="{Binding ElementName=ucControlBar}"
        Background="ForestGreen"
        ToolTip="{Binding StateMinMax}"
        ToolBar.OverflowMode="AsNeeded">
   <materialDesign:PackIcon Kind="WindowMaximize" />
</Button>

這是我的代碼隱藏:

public string StateMinMax { get; set; }
if (w != null)
{
   if(w.WindowState != WindowState.Maximized)
   {
      w.WindowState = WindowState.Maximized;
      StateMinMax = "min";
   }
   else
   {
      w.WindowState = WindowState.Normal;
      StateMinMax = "max";
   }
}

我希望有人能幫助我。 非常感謝你。

您可以使用設置ToolTip的樣式。 第一個 setter 將設置默認的ToolTip Minimize ,而DataTrigger綁定到包含WindowWindowState屬性,該屬性使用RelativeSource綁定在可視化樹中搜索。 如果WindowState屬性更改為Maximized ,則觸發器會將ToolTip相應地更改為Enlarge

<Button Command="{Binding MaxWindowCommand}"
        CommandParameter="{Binding ElementName=ucControlBar}"
        Background="ForestGreen"
        ToolBar.OverflowMode="AsNeeded">
   <Button.Style>
      <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
         <Setter Property="ToolTip" Value="Minimize"/>
         <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=WindowState}" Value="{x:Static WindowState.Maximized}">
               <Setter Property="ToolTip" Value="Enlarge"/>
            </DataTrigger>
         </Style.Triggers>
      </Style>
   </Button.Style>
   <materialDesign:PackIcon Kind="WindowMaximize"/>
</Button>

這是一個僅限 XAML 的解決方案,因此您不需要StateMinMax屬性和代碼隱藏。

我在綁定string時遇到問題。 當我最大化我的 window 按鈕的工具提示應該更改為“最小化”,如果它是正常大小,工具提示將被“放大”。

這是我的 XAML 代碼:

<Button Command="{Binding MaxWindowCommand}"
        CommandParameter="{Binding ElementName=ucControlBar}"
        Background="ForestGreen"
        ToolTip="{Binding StateMinMax}"
        ToolBar.OverflowMode="AsNeeded">
   <materialDesign:PackIcon Kind="WindowMaximize" />
</Button>

這是我的代碼隱藏:

public string StateMinMax { get; set; }
if (w != null)
{
   if(w.WindowState != WindowState.Maximized)
   {
      w.WindowState = WindowState.Maximized;
      StateMinMax = "min";
   }
   else
   {
      w.WindowState = WindowState.Normal;
      StateMinMax = "max";
   }
}

我希望有人能幫助我。 非常感謝。

暫無
暫無

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

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