小编met*_*cle的帖子

使用逗号和点将字符串解析为double

我正在尝试编写一个函数,它基本上将字符串数组转换为字符串数组,其中数组中的所有双精度数都舍入为我设置的小数位数.数组中也可以有字符串,它们根本没有双重值.

string[,] values = new string[1, 3];

values[0, 0] = "hello";
values[0, 1] = "0.123";
values[0, 2] = "0,123";

int decimalPlaces = 2;

double tmp;
string format = "F" + decimalPlaces.ToString();
IFormatProvider provider = CultureInfo.InvariantCulture;
for (int i = 0; i < values.GetLength(0); i++)
{
    for (int j = 0; j < values.GetLength(1); j++)
    {
        if (double.TryParse(values[i, j], out tmp))
        {
            values[i, j] = tmp.ToString(format, provider);
        }
    }
}

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

结果必须是:"你好","0.12","0.12",但它是"你好","123.00","0.12"将以错误的方式对待逗号.有没有人有一个简单而有效的解决方案?

c#

55
推荐指数
6
解决办法
14万
查看次数

将DoubleClick命令从DataGrid行绑定到VM

我有一个Datagrid,并且不喜欢我的解决方法在我的viewmodel上为单击的(也就是选定的)行触发双击命令.

视图:

   <DataGrid  EnableRowVirtualization="True"
              ItemsSource="{Binding SearchItems}"
              SelectedItem="{Binding SelectedItem}"
              SelectionMode="Single"
              SelectionUnit="FullRow">

        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <cmd:EventToCommand Command="{Binding MouseDoubleClickCommand}" PassEventArgsToCommand="True" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
        ...
  </DataGrid>
Run Code Online (Sandbox Code Playgroud)

视图模型:

    public ICommand MouseDoubleClickCommand
    {
        get
        {
            if (mouseDoubleClickCommand == null)
            {
                mouseDoubleClickCommand = new RelayCommand<MouseButtonEventArgs>(
                    args =>
                    {
                        var sender = args.OriginalSource as DependencyObject;
                        if (sender == null)
                        {
                            return;
                        }
                        var ancestor = VisualTreeHelpers.FindAncestor<DataGridRow>(sender);
                        if (ancestor != null)
                        {
                            MessengerInstance.Send(new FindDetailsMessage(this, SelectedItem.Name, false));
                        }
                    }
                    );
            }
            return mouseDoubleClickCommand;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想在我的视图模型中删除与视图相关的代码(具有依赖项对象和可视树帮助器的代码),因为这会以某种方式破坏可测试性.但另一方面,这种方式我避免当用户没有点击一行而是在标题上发生某些事情时.

PS:我试着看一下附加的行为,但是我无法在工作中从Skydrive下载,所以"内置"解决方案最好.

wpf binding datagrid command mvvm

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

绑定到Singleton类可观察集合成员

我似乎无法弄清楚这一点.我在这里找到了一些类似的问题,但要么我无法找到正确的方向,要么我正在做一些完全错误的事情.

我的应用程序有一个Singleton类记录器,它保存程序中每个类的日志消息.

public class Logger
{
    private Logger()
    {

    }

    private static volatile Logger instance;

    public static Logger GetInstance()
    {
        // DoubleLock
        if (instance == null)
        {
            lock (m_lock)
            {
                if (instance == null)
                {
                    instance = new Logger();
                }
            }
        }
        return instance;
    }

    //Helper for Thread Safety
    private static object m_lock = new object();

    private ObservableCollection<string> _Log;

    public ObservableCollection<string> Log
    {
        get { return _Log; }
    }

    public void Add(string text)
    {
        if (_Log == null)
            _Log = …
Run Code Online (Sandbox Code Playgroud)

wpf singleton binding static

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

从其他Assembly实例化ResourceDictionary xaml

我在包含颜色和画笔的WPF类库中定义了一个Reource Dictionary,名为BrushResources.xaml.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Lots of Colors and Brushes here>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

我想在另一个程序集的代码中使用一些Brushes,它引用了这个库项目.如何获得它的实例ResourceDictionary

c# wpf xaml resourcedictionary

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

Antlr为内部生成了类访问修饰符

我正在构建一个包含某些解析器的库.这些解析器内部使用ANTLR4构建.由于生成的类都是公共的,因此我的库的用户能够看到他们不需要查看的所有类.Sandcastle文档还包含所有这些类.有什么方法可以让Antlr让生成的类内部而不是公开?

c# antlr antlr4

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

从 Json 反序列化继承自 ReactiveObject 的对象不起作用

我正在尝试将一些 json 反序列化为一些继承自 Reactive UI 的 ReactiveObject 类的简单对象。由于某种原因,那里的房产永远不会被填满。使用 POCO 可以正常工作,不会出现任何问题。

class Program
{
    class Profile
    {
        public string Name { get; set; }
    }

    class ReactiveProfile : ReactiveObject
    {
        private string _name;

        public string Name
        {
            get => _name;
            set => this.RaiseAndSetIfChanged(ref _name, value);
        }
    }

    static void Main(string[] args)
    {
        var profiles = new List<Profile>()
        {
            new Profile() {Name = "Foo"},
            new Profile() {Name = "Bar"}
        };

        var path = @"C:\temp\profiles.json";

        File.WriteAllText(path,
            JsonConvert.SerializeObject(profiles.ToArray(),
                Formatting.Indented,
                new StringEnumConverter()),
            Encoding.UTF8);

        // works …
Run Code Online (Sandbox Code Playgroud)

c# json.net reactiveui

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

Linq在特定索引处选择数组值

我有这个方法:

public void Foo(double[] values1, double[] values2, int[] indexes)
{
    var values1AtIndexes = new List<double>();
    var values1NotAtIndexes = new List<double>();
    var values2AtIndexes = new List<double>();
    var values2NotAtIndexes = new List<double>();

    for (int i = 0; i < values1.Length; i++)
    {
        if (indexes.Contains(i))
        {
            values1AtIndexes.Add(values1[i]);
            values2AtIndexes.Add(values2[i]);
        }
        else
        {
            values1NotAtIndexes.Add(values1[i]);
            values2NotAtIndexes.Add(values2[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有LINQ方式吗?

c# linq

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

XAML中的通用IValueConverter C#WPF用法?

基本上我在这里使用了发布的转换器,只是将数据类型更改为通用.如何在XAML中使用通用转换器?

public class ReverseListConverter<T> : MarkupExtension, IValueConverter
{
    public ReverseListConverter()
    {
    }

    private ObservableCollection<T> _reversedList;

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        _reversedList = new ObservableCollection<T>();

        var data = (ObservableCollection<T>)value;

        for (var i = data.Count - 1; i >= 0; i--)
            _reversedList.Add(data[i]);

        data.CollectionChanged += DataCollectionChanged;

        return _reversedList;
    }

    void DataCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        var data = (ObservableCollection<T>)sender;

        _reversedList.Clear();
        for (var i = data.Count - …
Run Code Online (Sandbox Code Playgroud)

c# generics wpf xaml ivalueconverter

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

ContextMenu命令绑定到父级和自身

我试图在具有多个命令绑定的DataGrid上创建ContextMenu.一些必须绑定到本地ViewModel(即行的ViewModel),一些绑定到父级ViewModel.

到目前为止,我没有运气跟随其他解决方案.我只能执行SubCommand.

MainViewModel

public class MainViewModel : ViewModelBase
{
    public ObservableCollection<SubViewModel> Items { get; private set; } 

    public MainViewModel()
    {

        Items = new ObservableCollection<SubViewModel>();

        Items.Add(new SubViewModel());
        Items.Add(new SubViewModel());
    }

    private RelayCommand _mainCommand;

    public ICommand MainCommand
    {
        get
        {
            if (_mainCommand == null)
            {
                _mainCommand = new RelayCommand(
                    () =>
                        {
                            Debug.WriteLine("MAINCOMMAND EXECUTED");
                        }
                    );
            }
            return _mainCommand;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SubViewModel

public class SubViewModel : ViewModelBase
{
    private RelayCommand _subCommand;

    public ICommand SubCommand
    {
        get
        {
            if (_subCommand == null) …
Run Code Online (Sandbox Code Playgroud)

wpf binding datagrid viewmodel

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