小编Tra*_*lip的帖子

如何设置 WPF 控件的首选大小

有没有办法设置WPF 控件的首选大小而不设置其最大大小?

我通常将所有 WPF 控件设置为具有自动高度和宽度,并将对齐设置为拉伸。这在很多情况下都很有效。默认情况下,我的窗口大小合理。如果用户拉伸窗口,额外的空间将放在我认为应该的地方。

当我将 DataGridTextColumn 的宽度设置为“*”时,这中断了。现在突然间我的桌子的首选尺寸比我的屏幕大好几倍!我的窗口的初始大小正好是我屏幕的大小。

当然,我可以设置我的表(或我的列)的 MaxWidth,但我不想这样做。该最大宽度是在无穷远处的罚款。

我尝试将 Width 属性更改为固定数量的像素。这似乎改变了最大宽度。即使我在表格中设置了 Horizo​​ntalContentAlignment="Stretch",表格仍居中且宽度不变。

有没有解决的办法?大多数时候我喜欢自动调整大小。我喜欢将列的宽度设置为“*”。有没有办法让它们一起工作?

好像某处有我找不到的财产。在某些时候,容器必须询问我的桌子它想要多大的尺寸。该答案可能会被忽略或调整,但表格必须回答该问题。似乎我应该能够更改该值,而无需更改最大大小。(似乎如果我说“拉伸”并且有额外的空间,我的桌子应该被拉伸。)

谢谢你。

wpf datagrid

6
推荐指数
0
解决办法
662
查看次数

VS Code 中 IntelliSense 中的本地图像

我在 VS Code 中使用 TypeScript。我使用 JSDoc 来发表评论,因此 IntelliSense 通常将评论显示为工具提示。我使用 Markdown 来格式化这些评论,包括图像。大多数情况下它是有效的,但有一个问题。我只能看到来自 HTTP 服务器的图像。它不会显示本地文件系统中的图像

这是我期望看到的。 这就是我所期望的 但是,只有当我将图像存储在网络服务器上时,这才有效。

这是我尝试访问本地文件时看到的内容。 包括损坏的图像

这是这些图片背后的代码的简短版本。您可以在此处的上下文中找到确切的代码。

class IntelliSenseTest {
  /**
   * `to` and `from` assume that we are moving around the shape counter-clockwise,
   * i.e. the mathematically positive direction.
   * ![explanation of dots](./kite-dart-dots.png)
   */
  constructor(
  ) {}
}

export class Segment {
    /**
     * `to` and `from` assume that we are moving around the shape counter-clockwise,
     * i.e. the mathematically positive …
Run Code Online (Sandbox Code Playgroud)

markdown intellisense jsdoc visual-studio-code

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

调用static_assert(false)的正确方法是什么?

我正在尝试使用static_assert来强制失败.如果您尝试以特定方式实例化特定的模板化函数,我想生成编译器错误.我可以使它工作,但它真的很难看.有更简单的方法吗?

这是我的第一次尝试.这根本不起作用.它总是会生成错误,即使没有人尝试使用此功能.

template< class T >
void marshal(std::string name, T  *value)
{
  static_assert(false, "You cannot marshal a pointer.");
}
Run Code Online (Sandbox Code Playgroud)

这是我的第二次尝试.它确实有效.如果你不打电话,你就不会有错误.如果您这样做,您会得到一条非常易读的错误消息,指向此行并指向试图实例化它的代码.

template< class T >
void marshal(std::string name, T  *value)
{
  static_assert(std::is_pod<T>::value && !std::is_pod<T>::value, "You cannot marshal a pointer.");
}
Run Code Online (Sandbox Code Playgroud)

问题是这段代码充其量是丑陋的.它看起来像一个黑客.我担心下次更改优化级别,升级编译器,打喷嚏等时,编译器会意识到第二种情况与第一种情况相同,它们都会停止工作.

有没有更好的方法来做我想做的事情?

这是一些背景.我想有几个不同版本的marshal(),它们适用于不同的输入类型.我想要一个使用模板作为默认情况的版本.我想要另一个特别禁止除char*之外的任何指针.

void marshal(std::string name, std::string)
{ 
  std::cout<<name<<" is a std::string type."<<std::endl;
}

void marshal(std::string name, char *string)
{
  marshal(name, std::string(string));
}

void marshal(std::string name, char const *string)
{
  marshal(name, std::string(string));
}

template< class T >
void marshal(std::string name, T …
Run Code Online (Sandbox Code Playgroud)

static-assert sfinae c++11

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

TypeScript 对未定义的不一致检查——为什么这里需要感叹号?

我试图理解自动类型规则。在这个例子中我

  1. 有一个带有可选参数的函数。
  2. 检查它是否未定义,如果是,则填写新值。
  3. 用它。
  4. 最后归还。

步骤 1、2 和 4 按预期工作。在第 4 步,打字稿清楚地知道“map”参数不能是未定义的。但在第 3 步我必须显式添加一个 ! 否则我会收到错误消息。

该代码可以工作(现在我已经添加了感叹号/断言),但它没有意义。这是 TypeScript 的正确行为吗?我的代码中做错了什么吗?3 和 4 都引用同一个变量,并且 2 是在它们之前完成的,所以我看不出有什么区别。

function parseUrlArgs(inputString: string, map?: Map<string, string>) : Map<string, string> {
  if (!map) {
    map = new Map();
  }
  //map = map??new Map();  // This has the exact same effect as the if statement, above.
  // Note:  JavaScript's string split would not work the same way.  If there are more than two equals signs, String.split() would ignore …
Run Code Online (Sandbox Code Playgroud)

typescript deno

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