小编Tom*_* L.的帖子

MVVM + UserControl +依赖属性

好吧,这与这个问题有些相关:WPF从单个View Model打印多个页面

我试着按照那里给出的建议,但现在我被卡住了.

我的应用程序使用MainView.xaml和相应的MainViewViewModel.cs,我在后台使用MVVM Light.

现在 - 根据帖子 - 似乎我必须做以下事情:

  • 创建用户控件
  • 从用户控件中公开一些属性
  • 确保视图模型显示这些属性

这个想法很明确,但我在试图互相通知时感到困惑.

我的用户控件(UcTest.xaml)公开了一个依赖属性:

public string SpecialText
{
    get { return (string)GetValue(SpecialTextProperty); }
    set
    {
        SetValue(SpecialTextProperty, value);

    }
}

// Using a DependencyProperty as the backing store for SpecialText.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty SpecialTextProperty =
    DependencyProperty.Register("SpecialText", typeof(string), typeof(UcTest), new PropertyMetadata(new PropertyChangedCallback(SpecialTextChangedPropertyCallback)));

private static void SpecialTextChangedPropertyCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
    // Do something
    Debug.WriteLine("Ffgdgf");
}
Run Code Online (Sandbox Code Playgroud)

好吧,我现在有一个用户控件,它有一些依赖属性.然而,这些属性与我的ViewModel属性完全分离(那些属性应该显示).

所以基本上我有两种可能性:

  • 我现在如何告诉我的ViewModel UserControl某些属性已更改?
  • 是否有可能忘记依赖属性并直接访问视图模型?

附加信息#1:我已经上传了一个(简单)示例,说明了我在这里要做的事情:示例项目.我想从我的MainViewViewModel更改UserControl1中的标签值(通过ViewConodel中的绑定属性,用于UserControl1).

wpf user-controls dependency-properties mvvm

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

非法浮动值

我目前正在研究嵌入式微控制器并使用自定义printf例程.工具链是AVR32架构的GCC工具链.

我有问题,第二次调用vsnprintf或类似的CPU进入异常条件.

从支持,我得到了答案:

我们找不到任何这种行为的明显原因.但是,通过逐字节写入来创建浮点溢出条件并不安全.我们无法确保由此产生的值,建议使用"FLT_MAX"进行检查.

现在我想知道:什么是"非法"浮动值?不是所有的位组合都不应该代表至少一些值吗?如果相关:sizeof(float)是4个字节.

c gcc exception

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

C中的数据封装

我目前正在开发一个嵌入式系统,我在电路板上有一个组件,它出现了两次.我想为组件提供一个.c和一个.h文件.

我有以下代码:

typedef struct {
    uint32_t pin_reset;
    uint32_t pin_drdy;
    uint32_t pin_start;
    volatile avr32_spi_t *spi_module;
    uint8_t cs_id;  
} ads1248_options_t;
Run Code Online (Sandbox Code Playgroud)

这些都是硬件设置.我创建了这个结构的两个实例(每个部分一个).

现在我需要在后台保留一组值.例如,我可以每秒从该设备读取值,并且我想保留最后100个值.我希望这些数据不能从我的组件的"外部"访问(仅通过我的组件中的特殊功能).

我不确定如何在这里继续.我真的需要将数组作为结构的一部分吗?我想到的是做以下事情:

int32_t *adc_values; // <-- Add this to struct

int32_t *adc_value_buffer = malloc(sizeof(int32_t) * 100); // <-- Call in initialize function, this will never be freed on purpose
Run Code Online (Sandbox Code Playgroud)

然而,我将能够从我的代码中的任何地方(也来自我的组件外部)访问我的int32_t指针,这是我不喜欢的.

这是唯一的方法吗?你知道更好的方法吗?

谢谢.

c embedded malloc struct

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

绘制直线与矩形时的奇怪行为

好吧,我该如何开始呢?

我有一个应用程序,可以在屏幕上绘制一些形状(实际上是几千).它们有两种类型:矩形和直线.矩形有一个填充,行有一个Stroke + StrokeThickness.

我从两个文件中读取数据,一个是顶部数据,一个是底部数据.为了显示数据,我使用了一个带有Canvas的Viewbox(所以内容很好地拉伸).显示屏上的整个内容看起来像这样(这是正确的):

屏幕上方 屏幕下方

现在,同一个应用程序应该将此图像打印到打印机(用于测试我使用Windows附带的XPS打印机).

当我打印它(代码如下)时,它给出了相同的绘图顶部,但对于底部以下内容:

打印输出底部

看起来所有"线"都缺失(矩形存在).为了显示底部,我使用-1/-1的比例变换(水平和垂直镜像).如果我将比例变换设置为1/1,我会得到以下结果:

底部 - 非镜像

现在我被卡住了.为什么所有的线条都会消失,但如果它没有镜像,它们就在那里.最外面的矩形也有点移位(这可能是由于数据,所以请不要关注它).

我用于在屏幕上绘图的代码是:

                <Viewbox Grid.Row="0" RenderTransform="{Binding RenderTransform}" Margin="20" Name="VwBox">
                <Viewbox.RenderTransformOrigin>
                    <Point X="0.5" Y="0.5"></Point>
                </Viewbox.RenderTransformOrigin>
                <ItemsControl ItemsSource="{Binding Drawing}" ItemTemplateSelector="{StaticResource DataTypeTemplateSelector}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <Canvas Width="{Binding DrawingWidth}" Height="{Binding DrawingHeight}">
                            </Canvas>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>

                    <ItemsControl.ItemContainerStyle>
                        <Style TargetType="ContentPresenter">
                            <Setter Property="Canvas.Left" Value="{Binding Left}"/>
                            <Setter Property="Canvas.Top" Value="{Binding Top}"/>
                        </Style>
                    </ItemsControl.ItemContainerStyle>
                </ItemsControl>
            </Viewbox>
Run Code Online (Sandbox Code Playgroud)

对于打印我不依赖于XAMl,而是手动执行(如果我使用ContentPresenter则不会改变它):

                if (gs is GerberLine)
            {                   
                ContentPresenter cp = new ContentPresenter();
                var line = new Line();
                Canvas.SetLeft(cp, gs.Left);
                Canvas.SetTop(cp, gs.Top);
                line.X1 = 0.0;
                line.Y1 = 0.0;
                line.X2 = gs.Width; …
Run Code Online (Sandbox Code Playgroud)

c# wpf canvas line scaletransform

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

将MVC网站发布到Azure时,始终使用英语

我目前正在开发一个网站,该网站应该以用户的语言显示ist消息(我认为这称为国际化或全球化).我为英语添加了.resx文件(默认为ist),为德语(.de.resx)添加了另一个.resx文件.当我在本地运行网站时,很好地显示德语文本.现在,一旦我将网站发布到Azure,它仍然有效,但一切都是英文的,虽然我使用相同的语言设置相同的浏览器(更改浏览器也不会改变任何东西).Fiddler告诉我首选语言(Accepted-Language)实际上是de,en-US,en(按此顺序).

任何想法为什么Azure将一直用英语呈现一切?本网站是在Visual Studio 2013中开发的MVC5网站.

c# localization azure visual-studio-2013 asp.net-mvc-5

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

使用volatile字符串作为printf()的格式字符串

假设我有以下函数签名:

int printf(const char * restrict format, ... );
Run Code Online (Sandbox Code Playgroud)

现在,我有一个字符串定义如下:

volatile char command_str[256];
Run Code Online (Sandbox Code Playgroud)

现在,当我想将此字符串传递给我的printf函数时,我将收到以下警告:

Warning 32  [N] 2943 : passing 'volatile char [256]' to parameter of type 'const char *' discards qualifiers    C:\P\parameter\parameter.c
Run Code Online (Sandbox Code Playgroud)

我不想改变printf签名,最简单的解决方案就是让警告消失

printf((const char*)command_str, .......);
Run Code Online (Sandbox Code Playgroud)

我觉得这不是最好的解决方案.什么是正确的做法?我无法进行command_str非易失性,因为它是在中断内访问的.

c const volatile

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

EF6产生了荒谬的SQL语句

我可能不是SQL专家,但在进行性能测试时,我看到EF6(Code-First)生成以下语句:

SELECT 
[UnionAll3].[C2] AS [C1], 
[UnionAll3].[C3] AS [C2], 
[UnionAll3].[C4] AS [C3], 
[UnionAll3].[C5] AS [C4], 
[UnionAll3].[C6] AS [C5], 
[UnionAll3].[C7] AS [C6], 
[UnionAll3].[C8] AS [C7], 
[UnionAll3].[C1] AS [C8], 
[UnionAll3].[C9] AS [C9], 
[UnionAll3].[C10] AS [C10], 
[UnionAll3].[C11] AS [C11], 
[UnionAll3].[C12] AS [C12], 
[UnionAll3].[C13] AS [C13], 
[UnionAll3].[C14] AS [C14], 
[UnionAll3].[C15] AS [C15], 
[UnionAll3].[C16] AS [C16], 
[UnionAll3].[C17] AS [C17], 
[UnionAll3].[C18] AS [C18], 
[UnionAll3].[C19] AS [C19], 
[UnionAll3].[C20] AS [C20], 
[UnionAll3].[C21] AS [C21], 
[UnionAll3].[C22] AS [C22], 
[UnionAll3].[C23] AS [C23], 
[UnionAll3].[C24] AS [C24], 
[UnionAll3].[C25] AS [C25], 
[UnionAll3].[C26] AS [C26], …
Run Code Online (Sandbox Code Playgroud)

sql sql-server entity-framework ef-code-first

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

如何使破折号/连字符不破坏表格中的单词

我有一个有很多列的表格,每个列都可以按照它认为合适的方式来换行,除了第一列我根本不想换行。(我认为)的问题是第一行单词通常如下所示:

ABCDE-S01
SDFSD-X03
...
Run Code Online (Sandbox Code Playgroud)

如您所见,末尾有一个破折号,并且该行将始终在该破折号之后换行。我如何告诉表数据标签不要在此处换行,而是将其放入一行。我试过自动换行:正常但也会发生同样的情况。

我应该补充一点,我使用 Bootstrap 作为 CSS 框架,表定义如下所示:

<table class="table table-condensed table-hover table-striped">
Run Code Online (Sandbox Code Playgroud)

css word-wrap twitter-bootstrap

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