小编Dav*_*mer的帖子

如何使用WPF中的TabControl在不同选项卡上添加按钮

我有基本的标签,我希望每个标签都有一组不同的按钮,但按钮被添加到主窗口而没有标签.当我转到代码并剪切按钮并将其粘贴到我希望它的选项卡时,它只能用于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"

它可以工作,但是当我按下第二个按钮时它会失败

提前致谢

c# wpf tabcontrol button tabitem

1
推荐指数
1
解决办法
6657
查看次数

如何在TreeView中获取TreeViewItem的可用(可见)宽度

我有一个包含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,因为孩子们的可用空间比根树视图项目少.

有任何想法吗?

wpf treeview width treeviewitem

1
推荐指数
1
解决办法
3546
查看次数

动画WPF菜单

如果我有类似的东西:

<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,但如何妥善安排它们然后我不知道......

c# wpf animation menu textblock

1
推荐指数
1
解决办法
4610
查看次数

1
推荐指数
1
解决办法
508
查看次数

确保WPF中的ActualWidth不等于0

所以我读过它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.

c# wpf actualwidth

1
推荐指数
1
解决办法
3877
查看次数

WPF TextBox:错误设置样式

我已经为我的文本框定义了样式,该样式将显示文本框为空时要输入的内容的提示.

这将是我的窗口:

<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 styles textbox

1
推荐指数
1
解决办法
2930
查看次数

如何在WPF中获取背景的颜色

在我的小型WPF程序中,我想在鼠标点击消息框中显示客户区域的"背景颜色"的名称....我该怎么办?

系统:Win7(32位)/ VS2008

谢谢.

wpf background

1
推荐指数
1
解决办法
6954
查看次数

如何使CheckBox看起来像RadioButton

我想使用CheckBox,但我希望它具有RadioButton chrome.

最简单的方法是什么?

wpf checkbox styles radio-button

1
推荐指数
1
解决办法
8076
查看次数

silverlight NaN的高度和宽度,ActualHeight和ActualWidth也返回0.0 - 解决方法是什么?

popUpControllistBoxControl下面正在返回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)

silverlight wpf xaml actualwidth actualheight

1
推荐指数
1
解决办法
3563
查看次数

将TextBox的宽度绑定到其父容器的ActualWidth

我正在以编程方式将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)

binding textbox width windows-phone-7 actualwidth

1
推荐指数
1
解决办法
6508
查看次数