小编Mar*_*ter的帖子

Windows 10上使用32feet.NET的蓝牙配对(SSP)

我刚开始一个项目,要求我将Windows 10平板电脑与另一个蓝牙设备配对.

我决定从一个简单的Windows窗体应用程序开始,熟悉这个过程.我在我的解决方案中添加了32feet.NET NuGet包,并且很快就成功搜索了设备并填充了列表框.

client = new BluetoothClient();
devices = client.DiscoverDevices();
if (devices.Length > 0)
{
    foreach (var device in devices)
    {
        lstBTDevices.Items.Add(device.DeviceName);
    }
}
else
{
    MessageBox.Show("Unable to detect any bluetooth devices");
}
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个事件处理程序,以便我可以选择一个检测到的设备并尝试与它配对.

    private void LstBTDevices_SelectedIndexChanged(object sender, EventArgs e)
    {
        BluetoothDeviceInfo selectedDevice = devices[lstBTDevices.SelectedIndex];
        if (MessageBox.Show(String.Format("Would you like to attempt to pair with {0}?", selectedDevice.DeviceName), "Pair Device", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            if (BluetoothSecurity.PairRequest(selectedDevice.DeviceAddress, "123456"))
            {
                MessageBox.Show("We paired!");
            }
            else
            {
                MessageBox.Show("Failed to pair!");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的带有廉价蓝牙2.0适配器的Windows7台式电脑上,这会导致我的手机上出现一个弹出窗口,要求我输入密码.当我输入"123456"时,配对成功.

但是,这就是问题的起点.然后我拿起我的应用程序并在我的Windows10平板电脑上运行它,现在当我选择我的手机时,它会在我的手机上显示一个弹出窗口,其中包含一个随机的6位数密码,并显示一条消息,它应该与我平板电脑屏幕上显示的内容相匹配,配对/取消按钮作为选项.按任一按钮都会导致失败. …

c# bluetooth 32feet

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

UWP更改ListView项目高度

如何更改Windows 10 UWP应用程序中ListView控件中项目的高度?

例如,在UWP中,以下内容不会使行高度为20.(WPF问题可能表明这一点,但它似乎不适用于UWP XAML):

        <ListView x:Name="listView" IsItemClickEnabled="True">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Height" Value="20" />
                </Style>
            </ListView.ItemContainerStyle>

            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Height="20">
                        <TextBlock Text="{Binding Title}" TextWrapping="NoWrap" Foreground="White" Height="20"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
Run Code Online (Sandbox Code Playgroud)

listview listviewitem win-universal-app uwp

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

XAML标记绑定到类型为Type的键的字典

我正试图绑定到一个Dictionary<Type,string>通过xaml.

问题是,索引[]Binding标记扩展解释它作为字符串的内容.那个案子有某种'unescape-sequence'吗?

<TextBox Text="{Binding theDictionary[{x:Type ns:OnePrettyType}]}" />
Run Code Online (Sandbox Code Playgroud)

(绑定不起作用,因为{x:Type ns:OnePrettyType}它是作为字符串发送的)

.net wpf xaml markup-extensions

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

UWP中的FrameworkPropertyMetadata在哪里?

和/或如何DependencyProperty在我的控件上定义一个sepcifies AffectsMeasure

编辑:哦,刚看到这一点-我必须叫InvalidateMeasurethis在propertychangedhandler?

c# windows-10 uwp

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

设置本地隐式样式,不同于主题样式/替代为BasedOn DynamicResource

想象一下我可以动态改变主题的wpf应用程序.我这样做是通过在Application-resource级别交换ResourceDictionaries.主题资源为TextBox等定义了隐式样式.

现在我在我的应用程序中有一个部分,其中文本框应该具有此特定样式"NonDefaultTextBoxStyle"而不是应用程序范围的隐式文本框.

我很乐意这样做(使用DynamicResource,因为主题可以在运行时更改):

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox" BasedOn="{DynamicResource NonDefaultTextBoxStyle}"/>
    </StackPanel.Resources>
    <TextBox .../>
    <TextBox .../>
    <TextBox .../>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

而不是必须这样做:

<StackPanel>
    <TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
    <TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
    <TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

现在为了简化这一点,我有了在StackPanel上设置可继承的附加属性的想法,该属性将在每个后代文本框上设置指定的样式.

这是一个好主意吗?有更简单的方法吗?我错过了什么吗?

这几乎归结为:什么是样式中的BasedOn ="{DynamicResource ...}"的替代方案?

wpf xaml styles

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

用于跟踪二维数组边界的算法

我有一个2D整数数组,表示2D表面上的分组(晶粒).这样的事情: 这样的事情 (该图像的每个像素根据其所属的组分配一个整数,因此每个红色像素分配1,例如,每个蓝色为2)

给定两个这样的分组之间的边界上的X,Y坐标(用户点击那里)如何在这两个分组之间追踪边界,保存沿着边界的每个像素坐标并得到两个端点坐标(我不是关注没有端点但没有端点的机箱的情况)

我提出的任何算法似乎都很难实现,我无法想象之前没有人这样做过.有帮助吗?优选地是c#中的解决方案,但是非常感谢关于算法的任何提示.

编辑:

我本来应该说我要实现一个算法来像这样向量化该行:

  1. 两个端点之间定义一条线
  2. 得到距离当前线最远的边界点,如果它比d更远,则此时分割线,所以有两个线段
  3. 重复直到没有边界点比线条上的d更远

我认为这很容易实现,这就是为什么我没有陈述它.为了达到目的,我只需要解决当前的问题......

关于问题:

原始数据是如何格式化的?- 它很简单short[,] labeling;,大小约为250x150,如下所示:

11111112222
11111222222
11112222222
11112222222 <- user clicks on leftmost 2 or rightmost 1 -> I want to trace that border
11111122222                                                down to the first
11111133322                                                encountered 3 and up to the
11333333333                                                frame-border
Run Code Online (Sandbox Code Playgroud)

什么是端点? - 正如我一直在考虑全局解决方案,我可以将端点描述为:2x2区域,其中4个像素由color1,color2和至少三分之一的不同颜色组成.

什么是连续的连接? - 这对算法的其余部分并不重要,见下文

那些y形区域呢? - 我不关心它们,你可以假设边框后面的color1区域至少有2个像素宽,这就是为什么如果我们谈论4或8个邻域也没关系.

我现在有什么? - 起初我尝试了一种"行走"算法,就像mvds发布的那样,但发现我在所有4个方向上进行踩踏,邻居计算和检查,这很乏味,看起来很糟糕.我没有找到一个很好的表示"这是最后一步来自的方向,不要检查邻域的像素".

然后我放弃了行走算法并尝试了一种全局方法(如过滤器):对于每个像素检查它是否为color1并且在其4邻域中具有color2.有了这个,我得到了color1和color2之间的所有边界.我打算通过某种类型的填充删除所有与用户点击坐标无关的边界,但后来我遇到了问题:端点在哪里?

我仍然感谢更多的投入.现在我将看到我可以用mvds的算法走多远.

algorithm geometry trace discrete-mathematics

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

内容对话框不滚动

在 UWP 中,ContentDialog仅将大小调整到特定大小,然后内容将被剪切 - 而不是滚动。如果我ScrollViewer在内容中包含 a ,它只会随着其内容无限期地增长并且永远不会滚动。

xaml uwp

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

WPF:突出显示日期的一部分

我有一个TextBlock,使用当前文化的标准短日期格式显示日期.

String.Format(culture, "{0:d}", someDate)
Run Code Online (Sandbox Code Playgroud)

现在,产品经理希望以粗体突出显示年份.起初,我认为这很容易; 有一次运行绑定到日/月 - 部分,第二次运行到年份部分.

<TextBlock>
  <Run Text="{Binding DayMonthPart}"/>
  <Run FontWeight="Bold" Text="{Binding YearPart}"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

但那不会,因为不同的文化有不同的顺序.有些人把年份放在首位,有些人把它放在最后.

那么,我该如何实现呢?
有任何想法吗?

.net c# wpf

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

Caliburn.Micro和Simple Injector - InjectProperties已弃用 - 如何BuildUp()?

Simple Injectors function to InjectProperties标记为已弃用,将在以后的版本中删除.我怎样才能在Caliburn.Micro的BuildUp覆盖中使用它?框架内部IoC.BuildUp多次使用它!

dependency-injection caliburn.micro simple-injector

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

UWP透明LinearGradientBrush

我的C#UWP应用出现问题。

<Grid VerticalAlignment="Bottom" Height="40" Grid.Row="3" Margin="0,0,0,-1">
  <Grid.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#00000000" Offset="0"/>
        <GradientStop Color="{StaticResource stdBackgroundColor}" Offset="1"/>
    </LinearGradientBrush>
  </Grid.Background>
</Grid>
Run Code Online (Sandbox Code Playgroud)

该代码段应在页面底部显示一个透明的叠加层,但会创建一个黑色的叠加层,就像它在现有背景(也是Color stdBackgroundColor)的顶部添加透明值一样,因此看起来很奇怪(请参见图片)下面)

重叠问题

ScrollViewer没有这种效果的情况下,如何实现内容的透明覆盖?

c# xaml transparent linear-gradients uwp

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

如何在UWP中的"Enter"上关闭ContentDialog

我一直在试图让一个简单的ContentDialogTextBox关闭当用户点击Enter,同时仍然在TextBox.可悲的是TextBox,即使ContentDialog响应,它甚至没有a也无法工作Esc.

我希望有一种方法可以在KeyDownHandler中设置一个Result TextBox,但是看起来ContentDialog缺少这个?!

c# uwp

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

C++中的单例服务类

来自.NET/C#背景并且对PRISM有着深刻的了解,我真的很喜欢在CompositionContainer需要的时候获得一个类的这个实例.

通过ServiceLocator这个实例也是全局可访问的,这几乎可以归结为Singleton模式.

现在,我目前的项目是c ++,我正在决定如何管理程序的插件(外部DLL加载和类似的东西).

在C#中,我创建了一个PluginService,将其导出为共享,并通过该实例传递所有内容(成员基本上只有一个列表,包含插件和一堆方法).在c ++中,我显然没有a CompositionContainer或a ServiceLocator.

我可能会想到这个的基本版本,但无论我想象的是什么都涉及使用Singletons或Global变量.对此的普遍关注似乎是:不要做全球和少数单身.

我是什么做的?(以及我对此感兴趣的是:微软在这里给我们提供了一个如何编码的错误示例,或者这是一个实际案例,其中单身人士是正确的选择?)

c# c++ dependency-injection prism mef

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