回答
我真的不想這樣做,因爲它需要把代碼(C#)放在窗口文件後面的類中(我試圖完全避免使用ViewModel等)。
理想情況下,我會在XAML中描述這一點。
我迷上了每個擴展器「擴展」事件我很感興趣,並做了以下內容:
private void HandleExpanderExpanded(object sender, RoutedEventArgs e)
{
ExpandExculsively(sender as Expander);
}
private void ExpandExculsively(Expander expander)
{
foreach (var child in findPanel.Children)
{
if (child is Expander && child != expander)
((Expander)child).IsExpanded = false;
}
}
乾杯
AWC
所以,這就是你如何在WinForms這樣的老式框架中完成的。但它不是「WPF方式」,因爲WPF要充分健壯,你想從數據中獲得狀態,而不是從事件中獲取狀態。 – 2009-12-25 18:27:37
我意識到這一點,因此我的意見,但我很高興在代碼背後 – AwkwardCoder 2009-12-28 16:56:06
是你可以隨時把它放在一個列表框 - boooo ---你的方式是更好 - 它不是WPF的方式,但..做..它是錯誤的,使WPF的方式是不正確的! https://social.msdn.microsoft.com/Forums/vstudio/en-US/a2988ae8-e7b8-4a62-a34f-b851aaf13886/windows-presentation-foundation-faq?forum=wpf#expander_list – schmoopy 2014-12-12 23:51:20
您可以添加一個依賴屬性,其值爲「即擴大了擴展,」然後你可以綁定「擴展」屬性來表達「theExpandedProperty ==這個」使用你最喜歡的表達式綁定技術(類型轉換器等)。
這裏是一個更復雜的方式做到這一點在WPF沒有任何代碼:
<UserControl.Resources>
<ResourceDictionary>
...
<Style TargetType="{x:Type Expander}">
<Setter Property="IsExpanded" Value="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="{x:Null}" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ScrollViewer VerticalAlignment="Top" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto" VerticalContentAlignment="Top" BorderThickness="0,0,0,0" Grid.RowSpan="1" Grid.Row="0">
<ListBox x:Name="OrdersListBox" BorderThickness="0" ItemContainerStyle="{StaticResource ShellThemeListBoxStyle}"
IsSynchronizedWithCurrentItem="True"
prism:RegionManager.RegionName="{x:Static uiCommon:RegionNames.WorkSheetsRegion}" Background="#00000000">
<ListBox.ItemTemplate>
<DataTemplate DataType="typeData:WorkSheetsDetialsViewModel">
<local:WorkSheetsDetialsView/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
...
</Grid>
<UserControl
x:Class="Module.ExcelDocumentManager.WorkSheets.WorkSheetsDetialsView"
...>
<Expander>
<Expander.Header>
<TextBlock Text="{Binding HeaderInfo}" RenderTransformOrigin=".5,.5">
</TextBlock>
</Expander.Header>
...
</Expander>
</UserControl>
- 1. WPF擴展器 - 只有一個擴展器隨時可以擴展
- 2. 如何讓一個擴展擴展向上
- 3. 如何讓用戶控件擴展一個擴展UserControl的類?
- 4. WPF擴展器擴展/摺疊
- 5. TYPO3擴展生成器如何從另一個擴展擴展類
- 6. jQuery:如何擴展擴展?
- 7. 如何只擴展一個父項?
- 8. 如何讓我的導航欄擴展/擴展整個頁面?
- 9. 如何讓JTree擴展?
- 10. 展開多個WPF擴展器部分
- 11. Java中的每個類擴展Object.Then如何擴展其他類。因爲一個類只能擴展一個類
- 12. 什麼時候擴展EventDispatcher
- 13. 如何擴展一個BufferedImage
- 14. 如何擴展一個listview?
- 15. 如何僅禁用擴展器togglebutton WPF
- 16. 如何使WPF擴展器向上擴展,同時保持頭部固定
- 17. 創建一個擴展另一個PHP擴展的PHP擴展?
- 18. 如何讓RedirectToAction在控制器擴展
- 19. WPF擴展器觸發器
- 20. 如果Chrome擴展程序崩潰,如何讓另一個擴展程序重新加載崩潰的擴展?
- 21. 擴展擴展管理器
- 22. 滾動時擴展擴展
- 23. 什麼時候應該擴展NSDocument,什麼時候應該擴展NSWindowController?
- 24. 如何擴展擴展類的接口
- 25. TYPO3 7.6.10:如何擴展felogin擴展?
- 26. WPF擴展器驗證
- 27. WPF擴展器IsExpanded綁定
- 28. 如何擴展一個元素來填充擴展頭?
- 29. 我如何在html中擴展視頻以擴展Chrome擴展
- 30. 展開/摺疊WPF擴展器
我發現了一個優雅的XAML實現這個需求。單擊[這裏!](http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a2988ae8-e7b8-4a62-a34f-b851aaf13886) – Dabblernl 2010-04-09 19:53:34
404 - 找不到文件或目錄。 http://forums.msdn.microsoft.com/en-US/wpf/thread/a2988ae8-e7b8-4a62-a34f-b851aaf13886#expander_list – schmoopy 2014-12-12 23:48:26
in XAML https://stackoverflow.com/questions/897146/making -a-collection-of-wpf-expanders -extension-exclusive-ie-only-one-expande – 2017-08-24 00:17:17