我有基本的标签,我希望每个标签都有一组不同的按钮,但按钮被添加到主窗口而没有标签.当我转到代码并剪切按钮并将其粘贴到我希望它的选项卡时,它只能用于1个按钮,然后对于第二个按钮,我收到一条错误消息:
"该对象TabItem已经有一个孩子,无法添加Button.TabItem只能接受一个孩子."
这是代码的样子:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="394" Width="570">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0*" />
<ColumnDefinition Width="548*" />
</Grid.ColumnDefinitions>
<TabControl Margin="9,30,11,10" Name="tabControl1" Grid.Column="1" SelectionChanged="tabControl1_SelectionChanged">
<TabItem Name="Admin" Header="Admin">
</TabItem>
<TabItem Name="Staff" Header="Staff" />
<TabItem Name="Student" Header="Student" />
<TabItem Name="Diary" Header="Diary" />
<TabItem Name="Timetables" Header="Timetables" />
<TabItem Name="Assignments" Header="Assignments" />
<TabItem Name="Courses" Header="Courses" />
</TabControl>
<Menu Height="16" Name="menu1" VerticalAlignment="Top" Grid.Column="1" />
<Button Grid.Column="1" Height="23" HorizontalAlignment="Left" Margin="18,64,0,0" Name="button1" VerticalAlignment="Top" Width="118">Add/Edit Student</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我想在"Admin"选项卡中实现"button1"
它可以工作,但是当我按下第二个按钮时它会失败
提前致谢
我有一个包含3列Grid的网格,TreeViewItem其中HierarchicalDataTemplate包含以下定义:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
...
Run Code Online (Sandbox Code Playgroud)
我想设置网格的宽度,以便它完全占用TreeViewItem内部的所有可用空间TreeView.因此,网格的第三列应该在内部对齐TreeView.
如何获得网格宽度的正确值?
我知道,对于ListBox ItemTemplate,我可以通过将其绑定到以下来设置宽度ScrollContentPresenter:
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ScrollContentPresenter, AncestorLevel=1}, Path=ActualWidth}"
Run Code Online (Sandbox Code Playgroud)
这个技巧不起作用TreeView,因为孩子们的可用空间比根树视图项目少.
有任何想法吗?
如果我有类似的东西:
<StackPanel Orientation="Horizontal">
<TextBlock Text="FIRST" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="SECOND" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="THIRD" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="FOURTH" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="FIFTH" Margin="5" VerticalAlignment="Center" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何创建一个动画,其中TextBlocks将从屏幕的右侧逐个推出?
你能告诉我一个类似的例子吗?
我知道我可能需要使用Canvas而不是StackPanel,但如何妥善安排它们然后我不知道......
所以我读过它ActualWidth可能等于0,直到满载为止.我添加了它的事件处理程序,以确保它已完全加载:
text.AddHandler(TextBlock.LoadedEvent, new RoutedEventHandler(textBlock_Loaded));
Run Code Online (Sandbox Code Playgroud)
在这种情况textBlock_Loaded下,我有:
TextBlock tb = sender as TextBlock;
textBlockWidth = tb.ActualWidth;
Run Code Online (Sandbox Code Playgroud)
我需要textBlockWidth在main方法中使用变量,但每次我在我的Main方法中写入textBlockWidth的值时,我得到0.
所以这个问题是,ActualWidth在执行我的操作之前,如何确保不是0?由于WPF是事件驱动的,有没有一种方法可以在完成时触发某些方法,而不是之前?否则,它将返回0.
我已经为我的文本框定义了样式,该样式将显示文本框为空时要输入的内容的提示.
这将是我的窗口:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type TextBox}" x:Key="stlHintbox">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Mode=Self}}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="First name" FontStyle="Italic" Foreground="LightGray" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<TextBox Style="stlHintbox" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
抛出的错误是:
'Set property 'System.Windows.FrameworkElement.Style' threw an exception.' Line number '22' and line position '11'.
内在例外:
"'stlHintbox' is not a valid value for property 'Style'."
放在里面时风格很好用<TextBox.Style>,所以我在这里做错了什么?
在我的小型WPF程序中,我想在鼠标点击消息框中显示客户区域的"背景颜色"的名称....我该怎么办?
系统:Win7(32位)/ VS2008
谢谢.
我想使用CheckBox,但我希望它具有RadioButton chrome.
最简单的方法是什么?
popUpControl和listBoxControl下面正在返回NaN作为高度和宽度.这ActualHeight也是0.0
为什么?更重要的是,解决方法是什么?
<Popup Name="popUpControl" IsOpen="True" VerticalAlignment="Top" HorizontalAlignment="Left" >
<ListBox Name="listBoxControl" SelectionChanged="_ListBox_SelectionChanged"
Style="{StaticResource ListBoxStyle}" BorderBrush="Transparent"
MaxHeight="300" MaxWidth="350" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding ID}" VerticalAlignment="Center" Margin="2,0,0,0" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="2,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Popup>
Run Code Online (Sandbox Code Playgroud) 我正在以编程方式将a Textbox和a 加载Button到水平StackPanel.按钮的大小(仅包含一个Image)是固定的,但我无法让文本框填充其父级的可用宽度.这就是代码的样子:
StackPanel parent = new StackPanel() {
Orientation = Orientation.Horizontal,
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Top,
};
TextBox textbox = new TextBox() {
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Top,
//MinWidth = 375,
};
Button btn = new Button() {
Content = new Image() {
MaxHeight = 40,
MaxWidth = 40,
MinHeight = 40,
MinWidth = 40,
Margin = new Thickness( 0 ),
Source = new BitmapImage(
new Uri( "btnimage.png", UriKind.Relative ) …Run Code Online (Sandbox Code Playgroud) wpf ×9
actualwidth ×3
c# ×3
styles ×2
textbox ×2
width ×2
actualheight ×1
animation ×1
background ×1
binding ×1
button ×1
checkbox ×1
controls ×1
menu ×1
radio-button ×1
silverlight ×1
tabcontrol ×1
tabitem ×1
textblock ×1
treeview ×1
treeviewitem ×1
window ×1
xaml ×1