小编Bor*_*ris的帖子

如何在XAML中为边框设置MouseOver事件/触发器?

如何在XAML中为边框设置MouseOver事件/触发器?我希望当鼠标悬停在边框上时边框变为绿色,然后当鼠标不再在边框上时返回蓝色.为什么我不能只使用以下代码:

<Border 
    Name="ClearButtonBorder" 
    Grid.Column="1" 
    CornerRadius="0,3,3,0" 
    Background="Blue">
    <Border.Triggers>
        <Trigger Property="Border.IsMouseOver" Value="True">
            <Setter Property="Border.Background" Value="Green" />
        </Trigger>
        <Trigger Property="Border.IsMouseOver" Value="False">
            <Setter Property="Border.Background" Value="Blue" />
        </Trigger>
    </Border.Triggers>
    <TextBlock 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        Text="X" />
</Border>
Run Code Online (Sandbox Code Playgroud)

我真的没有在WPF中获得这些触发器和样式.这样的拖累是不能实现这样简单的事情..请为我提供解决方案并帮助我理解我的代码到底有什么问题?谢谢一堆.

wpf xaml triggers

71
推荐指数
1
解决办法
12万
查看次数

如何隐藏空TextBlock?

在下面提供的XAML中,我有时没有Phone的价值.当发生这种情况时,该值将丢失,但TextBlock仍占用面板中的空间.我想隐藏空TextBlock的东西StackPanel.

这是XAML:

<StackPanel>
    <TextBlock Text="{Binding Path=FirstName}" />
    <TextBlock Text="{Binding Path=LastName}" />
    <TextBlock Text="{Binding Path=Phone}" />
    <TextBlock Text="{Binding Path=Email}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我读过这篇文章,但接受的答案对我不起作用:

<StackPanel>
    <TextBlock Text="{Binding Path=FirstName}" />
    <TextBlock Text="{Binding Path=LastName}" />
    <TextBlock Text="{Binding Path=Phone}">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <Trigger Property="Text" Value="{x:Null}">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    <TextBlock Text="{Binding Path=Email}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我在某个地方犯了错误,或者接受的答案是错的?我该怎么做才能实现目标?

wpf

50
推荐指数
3
解决办法
3万
查看次数

如何将特定值传递给转换器参数?

我创建了一个类似于此的Person:

public class Person
{
    public enum GenderType
    {
        Female, 
        Male
    }

    public string Name
    {
        get; set;
    }

    public GenderType? Gender
    {
        get; set;
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,我创建了将呈现Person类型对象的数据模板.
这是XAML代码:

<DataTemplate 
    x:Key="personTemplate" 
    DataType="{x:Type model:Person}">
  <StackPanel>
    <RadioButton 
        Content="Female" 
        IsChecked="{Binding Path=Gender, 
                    Converter={StaticResource genderConverter}, 
                    ConverterParameter=???}"/>
    <RadioButton 
        Content="Male" 
        IsChecked="{Binding Path=Gender, 
                    Converter={StaticResource genderConverter}, 
                    ConverterParameter=???}"/>
    <RadioButton 
        Content="Not specified" 
        IsChecked="{Binding Path=Gender, 
                    Converter={StaticResource genderConverter}, 
                    ConverterParameter=???}"/>
  </StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

当然???代码中的s不起作用:)问题是我想创建一个genderConverter转换器,它将比较给定值,即与参数中提供personObject.Gender的给定Person.GenderType值相比较,true如果值匹配则返回.

我不知道如何使转换器参数通过Person.GenderType.Female,Person.GenderType.Male并且分别null对于第一,第二和第三单选按钮.

.net wpf xaml binding converter

49
推荐指数
2
解决办法
9万
查看次数

WPF:如何设置内容控件的数据模板触发器?

我想创建一个包含一个组合框和一个内容控件的用户控件.在组合框中进行的选择应确定内容控件将使用的数据模板.我读过这篇文章,它几乎展示了我想要实现的目标.

组合框中填充了enum ModelType值,可以是PersonCompany.如果用户选择Person,内容控件应使用personTemplate数据模板; 并companyTemplateCompany.

我对内容控件的XAML代码感到困惑.这是我创建的但我不能使它工作:

<UserControl.Resources>
  ...
  <DataTemplate x:Key="personTemplate" ...>
  <DataTemplate x:Key="companyTemplate" ...>
  ...
</UserControl.Resources>
...
<ContentControl x:Name="Account">
  <ContentControl.ContentTemplate>
    <DataTemplate>
      <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding AccountType}" Value="Person">
        <!-- I doubt the Value property is set correctly. -->
        <!-- It should be a value of an enum ModelType -->
          <Setter 
              TargetName="Account" 
              Property="ContentTemplate" 
              Value="{StaticResource personTemplate}" />
          <!-- The setter is unaware of the target name, i.e. content control …
Run Code Online (Sandbox Code Playgroud)

wpf xaml

35
推荐指数
1
解决办法
4万
查看次数

如何在C#中读取文件二进制文件?

我想创建一个接收任何文件的方法,并将其作为0和1的数组读取,即它的二进制代码.我想将该二进制代码保存为文本文件.你能帮助我吗?谢谢.

c# binary

30
推荐指数
5
解决办法
15万
查看次数

WPF:如何使用MVVM将命令绑定到ListBoxItem?

我刚开始学习MVVM.我通过遵循这个MVVM教程从头开始制作应用程序(我强烈推荐给所有MVVM初学者).基本上,我到目前为止创建的是一些文本框,其中用户添加他或她的数据,一个按钮来保存该数据,随后使用所有条目填充ListBox.

这就是我陷入困境的地方:我希望能够双击ListBoxItem并触发我创建并添加到ViewModel的命令.我不知道如何完成XAML方面,即我不知道如何将该命令绑定到ListBox(Item).

这是XAML:

...
<ListBox 
    Name="EntriesListBox" 
    Width="228" 
    Height="208" 
    Margin="138,12,0,0" 
    HorizontalAlignment="Left" 
    VerticalAlignment="Top" 
    ItemsSource="{Binding Entries}" />
...
Run Code Online (Sandbox Code Playgroud)

这是ViewModel:

public class MainWindowViewModel : DependencyObject
{
    ...
    public IEntriesProvider Entries
    {
        get { return entries; }
    }

    private IEntriesProvider entries;
    public OpenEntryCommand OpenEntryCmd { get; set; }

    public MainWindowViewModel(IEntriesProvider source)
    {
        this.entries = source;
        ...
        this.OpenEntryCmd = new OpenEntryCommand(this);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

最后,这是我想在用户双击EntriesListBox中的项目后执行的OpenEntryCommand:

public class OpenEntryCommand : ICommand
{
    private MainWindowViewModel viewModel;

    public OpenEntryCommand(MainWindowViewModel viewModel)
    {
        this.viewModel = viewModel;
    }

    public event …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding mvvm commandbinding

26
推荐指数
3
解决办法
7万
查看次数

如何自定义WPF应用程序的启动?

当创建一个新的WPF应用程序项目MainWindow.xaml,App.xaml及其对应的隐藏类代码自动生成.在App.xaml这里有一个属性,它定义了最初要运行的窗口以及默认的窗口StartupUri="MainWindow.xaml"

Dispatcher在同一个项目中创建了一个新类.在启动时,我希望Dispatcher构造该类的实例,然后运行其中一个方法.该方法实际上会创建并显示MainWindow窗口.那么我该如何修改App.xamlApp.xaml.cs为了实现它呢?或者,如果无法完成App,我该如何实施呢?谢谢.

wpf startup

26
推荐指数
1
解决办法
3万
查看次数

WPF数据绑定:如何使用XAML将枚举数据绑定到组合框?

我有一节课:

public class AccountDetail
{
    public DetailScope Scope
    {
        get { return scope; }
        set { scope = value; }
    }

    public string Value
    {
        get { return this.value; }
        set { this.value = value; }
    }

    private DetailScope scope;
    private string value;

    public AccountDetail(DetailScope scope, string value)
    {
        this.scope = scope;
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个枚举:

public enum DetailScope
{
    Private, 
    Business, 
    OtherDetail
}
Run Code Online (Sandbox Code Playgroud)

最后,我有一个.xaml文件:

<Window x:Class="Gui.Wpf.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test" 
    SizeToContent="WidthAndHeight">

    <Grid>
        <ComboBox 
            Name="ScopeComboBox" 
            Width="120" 
            Height="23" 
            Margin="12" /> …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf xaml combobox

24
推荐指数
2
解决办法
4万
查看次数

TextTrimming从左边开始

有没有办法TextBlock在左侧指定文本修剪?

我已经设法完成三个场景中的两个(第三个是我需要的场景):

  1. 定期修剪

    <TextBlock 
        VerticalAlignment="Center" 
        Width="80" 
        TextTrimming="WordEllipsis"
        Text="A very long text that requires trimming" />
    
    // Result: "A very long te..."
    
    Run Code Online (Sandbox Code Playgroud)
  2. 左修剪

    <TextBlock 
        VerticalAlignment="Center" 
        Width="80" 
        FlowDirection="RightToLeft"
        TextTrimming="WordEllipsis"
        Text="A very long text that requires trimming." />
    
    // Result: "...A very long te"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 左边修剪文本末尾的位置

    // Desired result: "...uires trimming"
    
    Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能?谢谢.

silverlight wpf xaml texttrimming

21
推荐指数
2
解决办法
7398
查看次数

如何使边框修剪子元素?

我有一个BorderCornerRadius属性设置为10,这里面Border,有一个StackPanel.该面板包含两个Border分别带有蓝色和红色背景的s.

蓝色边框的左上角和右上角以及红色边框的左下角和右下角都伸出第一个边框的弯曲边缘.我希望将蓝色和红色边框修剪到父边框.那可能吗?

顺便说一下,我知道如果我为CornerRadius蓝色和红色边框的属性设置相同的值,它将遵循第一个的曲线.我不希望这样 - 我想要修剪.谢谢!

<Border 
    Width="200" 
    Height="200" 
    BorderThickness="1" 
    BorderBrush="Black"
    CornerRadius="10">
    <StackPanel>
        <Border Height="100" Background="Blue" />
        <Border Height="100" Background="Red" />
    </StackPanel>
</Border>
Run Code Online (Sandbox Code Playgroud)

wpf

16
推荐指数
2
解决办法
8107
查看次数