2012-10-17 47 views
0

如何設置Visibility="Visible"按鈕控制模板內部時,在代碼背後的IsSendBtnVisible屬性是true如何隱藏控件模板中的按鈕?

這裏是我的WPF頁:

<Page 
    x:Class="CardViewPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="CardViewPage"> 

    <Grid Name="content" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <DocumentViewer Margin="0" Grid.Row="0" Name="documentViewer" /> 
    </Grid> 

</Page> 

這裏是我的自定義模板此頁面上的文檔查看器:

<Style TargetType="{x:Type DocumentViewer}"> 
    ... 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type DocumentViewer}"> 
     ... 
     <Button 
      Click="btnSendToServer_Click" 
      Width="25" 
      Height="25" 
      Visibility="Collapsed" /> 
     ... 
     </ControlTemplate> 
    </Setter> 
    ... 
</Style> 

回答

0

ü需要申報DependancyProperty烏拉圭回合的DocumentViewer和使用TemplateBinding在xaml ControlTemplate中(例如,UrProperty

<ControlTemplate TargetType="{x:Type DocumentViewer}"> 
      ... 
      <Button Click="btnSendToServer_Click" 
        Width="25" 
        Height="25" 
        Visibility="{TemplateBinding UrProperty}" 
        /> 
      ... 
     </ControlTemplate> 
+0

的DocumentViewer是非標準WPF組件。我如何在他內部聲明DependencyProperty?我有頁面代碼隱藏內的屬性。例如, – Frank59

+1

從它繼承 –

0

我建議你使用數據觸發實現這個...

<Button 
Click="btnSendToServer_Click" 
        Width="25" 
        Height="25"> 
      <Button.Style> 
       <Style> 
        <Setter Property="Button.Visibility" Value="Collapsed"/> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding IsSendBtnVisible}" Value="True"> 
          <Setter Property="Button.Visibility" Value="Visible"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

確保可見性設置爲在樣式而不是按鈕屬性崩潰..

注:綁定對於數據觸發可能會根據您的數據環境而變化

0

Dima Martovoi,bathineni - 感謝您的回覆。

Dima Martovoi,我認爲繼承自DocumentViewer是爲了解決這個小問題。 我試圖從bathineni的解決方案使用DataTrigger的變體,但它不起作用。不知道,爲什麼。 問題,使用下一個綁定解決:

<Button 
Visibility="{Binding RelativeSource={RelativeSource AncestorType=Page},Path=SendToServerVisiblity}"> 
</Button> 

其中

public Visibility SendToServerVisiblity 
    { 
     get 
     { 
      if (IsOnlineMode) 
       return Visibility.Visible; 
      return Visibility.Collapsed; 
     } 
    } 

在頁面代碼隱藏