2014-02-11 38 views
0

披露:WPF控件,用戶控件,模板混亂

我是新來WPF,大約一個星期了進去。

問題:

我想修改GridSplitter的行爲,使其捕捉到有趣的位置,顯示一個標籤(下面的分路器)與當前的位置,有一個右鍵菜單驅動所說的標籤等等。我已經在一個簡單的測試應用程序中將所有這些成功地原型化在一個分離器上,結合了XAML和一些代碼。

值得注意的是,由於GridSplitter無法託管內容,因此我將標籤放置在與分隔線相同的網格單元中,以便它們一起移動。

到目前爲止好....

我現在想複製我的工作,這樣我可以代替許多地方本機控件的使用我的新GridSplitter功能,而且,我想有兩個變體,水平和垂直。聽起來像繼承...創建從GridSplitter派生的子類並添加額外的功能。但是我所做的所有閱讀都讓我想知道如何解決這個問題,如果這樣做甚至可能不必重新開始並從頭開始構建我自己的GridSplitter?

想法歡迎。在此之前,我會恢復胎兒的位置。

感謝

+0

BTW,發佈您當前的代碼和XAML,如果你可以的,你需要 –

+0

什麼的截圖讓我們只說我想添加文本包裝盒上寫着「Hello,World!」隨着GridSplitter移動,並封裝該功能,重新使用:) – 2stroke

回答

1

這個答案可能會幫助您解決問題:How to make GridSplitter to "snap" into another element?

通過訂閱GridSplitterDragCompleted事件,你可以插入你的邏輯捕捉到「有趣」的位置。

+0

我的文章說明我得到這部分工作,謝謝。我的問題是圍繞使新的網格分離器可重複使用。 – 2stroke

+0

你應該做的是創建一個繼承自GridSplitter的新類,並在其中使用該控件:'public class MyGridSplitter:GridSplitter {public MyGridSplitter(){this.GridSplitterDragCompleted + = ;}}' – DLeh

+0

還有一些問題.. 。 我這樣做了,但是當我使用派生類是基類的隱藏屬性,例如「ResizeBehavior」和「Resize Direction」。爲什麼是這樣? – 2stroke

0

你應該

  1. 創建GridSplitter派生的新的控制。
  2. 訂閱DragCompleted事件來實現像DLeh提到的捕捉功能。
  3. 爲Label,ContextMenu等添加一些新屬性
  4. 爲您的新控件提供樣式。
0

這回答如何將內容拆分

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Button Grid.Row="0" Content="Row 0" Background="Orange"/> 
    <!--<GridSplitter Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Stretch" Height="20" Background="Purple"/>--> 
    <GridSplitter Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Stretch"> 
     <GridSplitter.Template> 
      <ControlTemplate TargetType="{x:Type GridSplitter}"> 
       <TextBlock Text="TextBlock splitter" Background="Yellow" FontWeight="Bold"/> 
      </ControlTemplate> 
     </GridSplitter.Template> 
    </GridSplitter> 
    <Button Grid.Row="2" Content="Row 0" Background="Salmon"/> 
</Grid> 
+0

謝謝。這絕對回答了我的一個問題。我將與此一起運行並報告回來。我會投票,但我沒有代表。 – 2stroke

+0

技術上它應該是一次一個問題。在WPF世界中,你很少必須從頭開始編寫自己的控件。 – Paparazzi