小编Sha*_*run的帖子

WPF/C#:我应该在哪里保存用户首选项文件?

保存用户首选项文件的建议位置是什么?是否有推荐的方法来处理用户偏好?

目前,我使用从typeof(MyLibrary).Assembly.Location作为默认位置返回的路径来存储应用程序生成或要求的文件.

编辑:我发现了两个相关/有趣的问题:

编辑#2:这只是像我这样以前从未使用过设置的人的笔记.设置是非常有用的,但我不得不做一大堆挖掘来弄清楚发生了什么(来自Python世界,而不是我使用的东西).事情变得复杂,因为我想保存字典,显然它们不能被序列化.设置似乎也存储在3个不同的文件中,具体取决于您的操作.还有一个app.config,user.configsettings.setting文件.所以这里有两个我觉得有用的链接:

c# wpf file

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

C#删除事件处理程序

我已经这样做了一段时间,但我没有注意到我new每次删除事件处理程序时都使用过.我应该创建一个新对象吗?

基本上1和2之间有区别吗?

  1. ethernetdevice.PcapOnPacketArrival -= new SharpPcap.PacketArrivalEvent(ArrivalResponseHandler);

  2. ethernetdevice.PcapOnPacketArrival -= ArrivalResponseHandler;

编辑: 好的,这是重复.对于那个很抱歉.答案发布在这里.

具有相同目标,方法和调用列表的两个相同类型的委托被认为是相等的.

c# events delegates

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

哈希函数是否存在于自然界?

鉴于目前有不少生物信息学家,想知道你们中是否有人见过自然界中出现的哈希函数(或映射机制)的例子?如果是这样,他们如何运作?

hash

18
推荐指数
2
解决办法
659
查看次数

WPF调试数据触发器?

我想做一些非常简单的事情.我有一个绑定到bool的ToggleButton.IsChecked属性.我希望背景在红色(假)和绿色(真实)之间切换.但由于某种原因,它似乎是在红色和无背景之间切换.我使用转换器来检查我是否从源获得正确的通知我是,所以不确定为什么一个触发器(假/红色)工作而另一个(真/绿色)不起作用.还想听听人们如何调试这类问题.谢谢!

这是代码.

<DataTemplate x:Name"Flipper">
    <StackPanel>
    ...
    <ToggleButton IsChecked="{Binding Path=BoolValue,
                                      Converter={StaticResource converter}}" 
                  Name="onoff" >
    </ToggleButton>
    ...
    <StackPanel>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding ElementName=onoff,Path=IsChecked}"
                     Value="True">
            <Setter TargetName="onoff" Property="Background" Value="Green"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=onoff,Path=IsChecked}" 
                     Value="False">
            <Setter TargetName="onoff" Property="Background" Value="Red"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

更新:我将togglebutton更改为一个复选框,它可以工作.不明白为什么......

wpf triggers datatemplate

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

Python float - str - float怪异

>>> float(str(0.65000000000000002))

0.65000000000000002

>>> float(str(0.47000000000000003))

0.46999999999999997     ???
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如何转换0.47000000000000003为字符串并将结果值恢复为浮点数?

我在Windows上使用Python 2.5.4.

python string floating-point floating-accuracy ieee-754

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

WPF 将工具提示添加到滑块的轨道

我在滑块模板中的轨道上添加了一个工具提示(如下所示),但不是绑定到滑块的当前值,我想绑定到与鼠标经过的“轨道值”对应的值。类似于 youtube 视频滑块允许的内容。因此用户可以将鼠标悬停在轨道上并看到相应的值,而无需实际移动拇指。

<Track Grid.Row="1" Name="PART_Track" ToolTip="{Binding Path=Value}" ToolTipService.Placement="Mouse">
</Track>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

wpf slider tooltip

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

WPF滑块问题

我在旧的win32应用程序中看到过这种行为,当你在滑块轨道上的某个位置按住鼠标时(拇指除外),拇指移动到该位置.

在WPF中,似乎正在发生的事情是拇指移动由SmallChange或LargeChange定义的距离.如果继续按住,它会在Delay属性定义的一段时间后再次通过SmallChange/LargeChange移动.

现在我想得到旧的行为?因此,如果拇指位于2并且我在10附近按下鼠标,我希望它跳到10.最好的方法是什么?

在此先感谢您的任何建议.

c# wpf slider

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

WPF Datagrid:以编程方式编辑单元格

我有一个单元格,只需单击它就需要设置它的值.它与不同属性的多重绑定.

我应该在哪里这样做?我一直试图在datagrid beginingedit处理程序中这样做(没有太大的成功).我可以手动点击两次(一次选择单元格,然后开始编辑),并设置值.但我想以编程方式做到这一点......

private void MyDataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{

TextBlock t = e.EditingEventArgs.OriginalSource as TextBlock;
if (t == null) return;
t.Text = SimulatedEdit();

// All this below is just me trying different thing. Not sure what I need to be doing
e.EditingEventArgs.Handled = true;
MyDataGrid.CommitEdit();
MyDataGrid.UnselectAllCells();
}
Run Code Online (Sandbox Code Playgroud)

这就是设置columntemplate的方法

MultiBinding tempmb = new MultiBinding();
Binding tempXB = new Binding("X");
Binding temptYB = new Binding("Y");
tempmb.Bindings.Add(tempXB);
tempmb.Bindings.Add(temptYB);
tempmb.ConverterParameter = "ggrid";
tempmb.Converter = new LabelDecider();

            DataGridTemplateColumn dgtc = new DataGridTemplateColumn
            {
                Header …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid

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

SPARQL查询语言标签怪异

这有效:

SELECT * WHERE{
?x rdfs:label "Chalti Ka Naam Gaadi"@en .
?x foaf:name ?z .    
}
Run Code Online (Sandbox Code Playgroud)

(DBpedia SPARQL Explorer上的结果)

这不是:

SELECT * WHERE{
?x foaf:name "Chalti Ka Naam Gaadi" .
?x rdfs:label ?z .    
}
Run Code Online (Sandbox Code Playgroud)

(DBpedia SPARQL Explorer上的结果)

为什么?

rdf semantic-web sparql

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

C#使用来自两个不同线程的单例

我在wpf应用程序中使用单例模式,但对如何使其适用于多个线程存有疑虑.

我有一个名为Monitor的类,它维护一个"设置"列表,供不同的"设备"使用.大纲如下所示.

在我的主线程上,我正在执行Monitor.getMonitor.register(watchlist)或Monitor.getMonitor.unregister(...),具体取决于用户输入,并且我每隔200ms执行一次DispatchTimer执行Monitor.getMonitor.update()

public class Monitor
{
    private Hashtable Master; //key=device, value=list of settings to watch
    private static Monitor instance = new Monitor();
    private Monitor() {}
    public static Monitor getMonitor() 
    {
        return instance;
    }
    public void register(watchlist){...}
    public void unregister(...){...}
    public void update(){...}

}
Run Code Online (Sandbox Code Playgroud)

register()/ unregister()对hastable执行add/remove.update()只是从哈希表中读取东西.

根据设备和设置的数量,update()将迭代hastable及其内容,获取最新值.主线程可能经常调用注册和注销,我希望gui保持响应.这是一个很好的方法吗?

我是否锁定哈希表,围绕添加/删除和迭代,或者只是使用try catch(ala优雅地失败)来覆盖更新中的迭代部分,以捕获哈希表可能进入的任何奇怪状态(无锁定)或者是否有更好的方法要做到这一点(如果更新失败没有概率..无论如何将再次在200ms运行).

不太确定发生了什么,导致代码没有真正显示任何问题本身让我有点不安因为它似乎错了.谢谢你的任何建议......

c# singleton multithreading

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