小编Bor*_*ris的帖子

在C#中,如何获取白色空间的XML节点值?

我有一个XML节点,其值是一个空格.例:

<sampleNode> </sampleNode>
Run Code Online (Sandbox Code Playgroud)

我正在使用Serializer从XML文档中获取数据以将其存储在对象中.现在,我面临的问题是:如果XML节点值只包含空格,就像上面的示例节点一样,序列化程序将其解释为string.Empty.

我怎么能克服这个?我需要得到实际的空白区域,即"".谢谢你!

c# xml xmlnode

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

在画布上定位UIElement

我有一个画布和一个红色矩形. Rectangle有一个MouseDown事件处理程序实现:

private void RedRectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
    CreateMyBorder();
}
Run Code Online (Sandbox Code Playgroud)

CreateMyBorder方法应该创建一个Border与画布上的矩形具有相同大小和位置的UIElement ,即它应该覆盖红色矩形.

复制WidthHeight红色矩形的属性和设置它们的Border元件是容易的:

myBorder.Height = RedRectangle.Height;
myBorder.Width = RedRectangle.Width;
Run Code Online (Sandbox Code Playgroud)

但是,经过2个小时的试错后,我无法在画布上复制红色矩形的位置!预期的:

double x = RedRectangle.GetValue(Canvas.Left);
double y = RedRectangle.GetValue(Canvas.Top);
myBorder.SetValue(Canvas.Left, x);
myBorder.SetValue(Canvas.Top, y);
Run Code Online (Sandbox Code Playgroud)

不起作用xy变量值NaN.为什么?

请帮助,我无法相信,UIElement在面板上获得和设置位置这样的微不足道的事情可能会非常恼人.谢谢.

wpf canvas wpf-controls uielement wpf-positioning

8
推荐指数
1
解决办法
2万
查看次数

WPF:MVVM对转换器说不,但我需要很好的枚举值

在模型层中,我定义了一个枚举:

public enum MemberStatus
{
    ActiveMember = 0,
    InactiveMember = 1, 
    Associate = 2,
    BoardMember = 3,
    Alumni = 4
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我有一个组合框,其中填充了这些枚举值:

<UserControl.Resources>

  <ObjectDataProvider 
      x:Key="memberStatusesDataProvider" 
      ObjectType="{x:Type system:Enum}" 
      MethodName="GetValues">
    <ObjectDataProvider.MethodParameters>
      <x:Type TypeName="model:MemberStatus" />
    </ObjectDataProvider.MethodParameters>
  </ObjectDataProvider>

</UserControl.Resources>
...
<ComboBox 
    ItemsSource="{Binding Source={StaticResource memberStatusesDataProvider}}" 
    SelectedItem="{Binding Path=Status}" />
...
Run Code Online (Sandbox Code Playgroud)

这导致组合框的选择与枚举中定义的值完全相同.虽然这是我最初的目标,但我希望为用户提供更好的演示,如下所示:

  • 组合框选择:
    • 活跃成员
    • 不活跃的成员
    • 关联
    • 董事会成员
    • 校友

此外,如果应用程序中的语言发生更改,我需要使用该语言的枚举值.为了解决这个问题,我想到的第一件事就是为MemberStatus枚举值创建一个转换器.我在这个主题上发现了这篇美丽的文章:http://www.codeproject.com/KB/WPF/FriendlyEnums.aspx但是MVVM模式表明根本不应该创建它们 - 我同意这一点.但是,在这个例子中,这种肯定对我没有用.

它应该如何完成?谢谢.

wpf xaml mvvm

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

设置Eval(bool)的选中值

我有一个房产

public bool AutoRenew
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

在页面中:

<input type="checkbox" checked='<%# Eval("AutoRenew") %>' />
Run Code Online (Sandbox Code Playgroud)

但总是检查,即使属性的值是false.

我尝试了以下变化:

<input type="checkbox" checked='<%# Convert.ToBoolean(Eval("AutoRenew")) %>' />
<input type="checkbox" checked='<%# Convert.ToBoolean(Eval("AutoRenew")) == true %>' />
<input type="checkbox" checked='<%# (Boolean)Eval("AutoRenew") %>' />
Run Code Online (Sandbox Code Playgroud)

但没有任何作用,它一直在检查.表达式应该是什么样的?

编辑:这是页面中有问题的部分:

...
<asp:ListView ID="MyListView" runat="server">
    <LayoutTemplate>
        <table class="ms-listviewtable" style="background-color: White;">
            <tr class="ms-viewheadertr ms-vhltr">
                <th class="ms-vh-icon" scope="col">
                    <input type="checkbox" />
                </th>
                <th class="ms-vh2">
                    <div class="ms-vh-div"><a>Training Item</a></div>
                </th>
                <th class="ms-vh2">
                    <div class="ms-vh-div"><a>Training Task Type</a></div>
                </th>
                <th class="ms-vh2">
                    <div class="ms-vh-div"><a>Due Date</a></div>
                </th> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net checkbox

8
推荐指数
1
解决办法
2万
查看次数

Point 双坐标的最佳实践

System.Drawing.Point接受int参数值XY坐标参数。
不是我需要的。

然后是System.Windows.Point它接受和double的值。这就是我需要的,但是我不确定这是否是我应该在类库项目中使用的结构。XY

最后,我发现System.Drawing.PointF,但它接受和坐标参数float的值。我更愿意使用.XYdouble

最佳实践是什么?

进一步澄清:

基本上,我有一个 WPF 项目和一个类库项目,用作 UI 的模型。我需要记住模型中的矩形坐标(双,双)。

c# wpf double point

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

如何用.NET关闭特定的显示器?

好的,我知道这个主题有很多帖子.但是,它们都没有为我的问题提供解决方案:我不想只关闭我的显示器,我希望我的代码关闭特定的显示器.大多数人提到的网址http://fci-h.blogspot.com/2007/03/turn-off-your-monitor-via-code-c.html在这里没有用,因为它关闭了所有的显示.

所以,我有我的笔记本电脑屏幕和一个额外的外接显示器.当我正在看电影时,我将显示屏切换到外接显示器,而我的笔记本电脑屏幕变黑了,然而,它仍然在黑暗中发光.我想把它关掉.有人可以帮忙吗?

编辑:有没有办法来实现这一点,这意味着它不必用.Net编写.基本上,我只需要一个能够交替关闭和打开特定显示器的.exe文件.

c# screen monitor

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

WPF:如何设置颜色变化动画?

我有一个网格,一个窗口根元素.我想应用一个动画,它会在5秒内将背景颜色从白色变为绿色.这是我做的:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    ColorAnimation animation;

    animation = new ColorAnimation();
    animation.From = Colors.White;
    animation.To = Colors.Green;
    animation.Duration = new Duration(TimeSpan.FromSeconds(5));
    rootElement.BeginAnimation(Grid.BackgroundProperty, animation);
}
Run Code Online (Sandbox Code Playgroud)

代码不起作用.什么都没有改变.我哪里弄错了?谢谢.

wpf animation coloranimation

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

WPF:MVVM在哪里停止并且代码隐藏开始了?

我创建了一个窗口,其中包含一个ListView显示人员集合的窗口.还有3个TextBoxes应该显示人的名字和姓氏,以及年龄.最后,有一个Button保存在这些TextBoxes中输入的新人数据.

ListView通过实现MVVM来加载人员.奇迹般有效!此外,通过单击Button也可以通过MVVM 将新人添加到集合中.

但是有两个用例,我不确定使用命令是更明智的,即MVVM,还是简单的代码隐藏.用例是:

  1. 当用户从中选择一个人时ListView,TextBoxes应显示人员详细信息.
  2. 当用户键入字符而不是TextBox显示人的年龄的数字时,应警告他或她输入的数据不正确.

我怀疑是否应该使用MVVM或代码隐藏的原因是因为两个用例都与仅视图(GUI)相关,即与模型或应用程序业务逻辑没有交互性.该ListView项目源绑定到人的集合ObservableColleciton<Person>,并与被选择的人的所有数据已经传递到当视图ListView中填充的物品.在第二个用例中,再次,没有必要转到ViewModel,以便让它触发有关错误用户输入的消息框.如何在ViewModel类的age依赖属性中创建验证回调呢?

感谢您的所有澄清.

wpf code-behind mvvm

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

提高动画平滑度(移动控件)

我已经通过以下方式实现了移动网格控件的动画:

<Grid 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <Grid.Style>
    <Style TargetType="Grid">
      <Style.Triggers>
        <DataTrigger 
            Binding="{Binding ElementName=rootLayout, Path=IsVisible}" 
            Value="True">
          <DataTrigger.EnterActions>
            <BeginStoryboard>
              <Storyboard>
                <ThicknessAnimation 
                    Storyboard.TargetProperty="Margin"                      
                    From="-500,0,0,0"
                    To="0,0,0,0" 
                    Duration="0:0:0.5" />
              </Storyboard>
            </BeginStoryboard>
          </DataTrigger.EnterActions>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Grid.Style>

  <Border 
      Grid.RowSpan="2" 
      Background="Black"
      CornerRadius="6" >          
    <Border.Effect>
      <DropShadowEffect />
    </Border.Effect>
  </Border>

  <TextBlock 
      Grid.Row="0" 
      Width="400" 
      Height="200" 
      Margin="20,20,20,10" 
      Text="{Binding Path=MessageText}" />

  <Button 
      Grid.Row="1" 
      Margin="20,5,20,15" 
      HorizontalAlignment="Right" 
      Width="75" 
      Content="OK" 
      Command="{Binding Path=CloseDialogCommand}" />

</Grid>
Run Code Online (Sandbox Code Playgroud)

动画效果很好,但很难看.它是摇摇欲坠/紧张/生涩,它看起来真的很不专业.有没有办法改善这个?我是否使用正确的方法动画Margin物业的价值变化以移动网格?我读过RenderTransform,但我不知道如何在我的情况下使用它.

此外,动画看起来不自然.我知道这可以改进,但我不知道如何.这些属性是什么,它们可以帮助我增强我的动画:

  • AccelerationRatio
  • DecelerationRatio
  • EasingFunction
  • IsAdditive
  • IsCumulative
  • SpeedRatio

谢谢你的帮助!

PS我试图在XAML中尽可能多地放入代码,所以我更喜欢这种方法,但实际上,如果有任何改进的话......

wpf xaml

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

WPF数据绑定:如何将ItemsCollection中的项绑定到Grid.Row和Grid.Column?

我有一节课:

public class TempClass
{
    public int Row
    {
        get { return row; }
        set { row = value; }
    }
    public int Column
    {
        get { return column; }
        set { column = value; }
    }
    public string Value
    {
        get { return this.value; }
        set { this.value = value; }
    }

    int row;
    int column;
    string value;

    public TempClass(int row, int column, string value)
    {
        this.row = row;
        this.column = column;
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个List<TempClass> …

wpf binding

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