【问题标题】:Cast Data Bindings Values Types转换数据绑定值类型
【发布时间】:2013-03-07 15:53:13
【问题描述】:

我有一个Slider 控件和一个TextBlock,通过数据绑定显示Slider 的值。

问题是它显示一个浮点数,而我对整数感兴趣。

我想将浮点数强制转换为整数,因此我不会在TextBlock 中看到45.25139664804483,而只会看到45

【问题讨论】:

  • 你尝试过类似int newValue = Convert.ToInt32(floatValue);的方法吗?
  • 是的,蒂姆是对的。参考 - stackoverflow.com/questions/2578348/…
  • @Tim 我做了,但 UI 不知道值何时更新。它从 0 开始,在滑块的值改变后,TextBlock 的文本保持在 0。
  • 啊...这是一个不同的问题。您需要更新 TextBox 内容,可能使用事件处理程序。发布您的代码,您会得到很好的答案。嘿-就像我第一次输入此评论时出现的以下内容:)
  • 哦,我的目标是涉及数据绑定的解决方案。这可能吗?

标签: c# wpf data-binding casting


【解决方案1】:
 private void Slider_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
 {
      myTextBlock.Text = Convert.ToInt32(Math.Floor(e.NewValue));
 }

希望这会有所帮助。 带绑定:

int _myValue;
public int MyValue{get{return _myValue;}set{_myValue = value; NotifyPropertyChanged("MyValue");}}

  private void Slider_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
     {
          MyValue = Convert.ToInt32(Math.Floor(e.NewValue));
     }

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

在这种情况下,您的类需要实现INotifyPropertyChanged 接口

【讨论】:

  • 有没有办法通过数据绑定来做到这一点?
  • 将您的 TextBlock 绑定到 MyValue。您可能想查看 INotifyPropertyChanged。
【解决方案2】:

Slider_ValueChanged上试试这个

textBox.Value = (int)Math.Ceiling(45.25139664804483);

【讨论】:

  • 有没有办法通过数据绑定来做到这一点?
【解决方案3】:

您可以在 TextBlock 绑定上使用 StringFormat 来格式化小数位

<StackPanel>
    <TextBlock Text="{Binding Value, ElementName=slider/>
    <TextBlock Text="{Binding Value, ElementName=slider, StringFormat={}{0:0}}" />
    <Slider x:Name="slider" />
</StackPanel>

结果:

【讨论】:

  • 天哪,我已经尝试过多次使用 StringFormat,但无法弄清楚在冒号后面写什么。谢谢!
  • 是的,xaml 中的 StringFormat 使用起来很糟糕,我的诀窍是用 {} 开始它似乎可以防止智能感知被触发,哈哈,哦,另一个技巧是如果你需要使用NewLine 或其他类似的转义字符使用其十六进制值,例如:NewLine = &amp;#x0a;
  • @sa_ddam213 SO应该有一个“跟踪”功能,这样我就可以跟踪你的答案并了解更多哈哈
  • @failedprogramming,你可以在他们的个人资料中访问人们的答案,我跟踪了很多人,哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2021-06-10
  • 1970-01-01
  • 2022-07-13
相关资源
最近更新 更多