我希望能够在RichTextBlock元素中显示超链接,但我也希望它看起来正确.我能够得到的最接近的是:

这个XAML粘贴在下面 - 基本上,我使用InlineUIElement并编辑了资源以删除按钮周围的所有问题.我错过了什么吗?解决这个问题的唯一真正方法是滚动我自己的超链接吗?
这是富文本块的XAML:
<RichTextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14">
<Paragraph>I just want this
<InlineUIContainer>
<HyperlinkButton Style="{StaticResource HyperlinkButtonStyle1}">Hyperlink</HyperlinkButton>
</InlineUIContainer>
to not look like crap
</Paragraph>
</RichTextBlock>
Run Code Online (Sandbox Code Playgroud)
这里是nuked资源的XAML:
<Style x:Key="HyperlinkButtonStyle1" TargetType="HyperlinkButton">
<Setter Property="Foreground" Value="{StaticResource HyperlinkForegroundThemeBrush}"/>
<Setter Property="Background" Value="{StaticResource HyperlinkButtonBackgroundThemeBrush}"/>
<!--<Setter Property="BorderBrush" Value="{StaticResource HyperlinkButtonBorderThemeBrush}"/>-->
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="FontFamily" Value="Global User Interface"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HyperlinkButton">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> …Run Code Online (Sandbox Code Playgroud) 我试图从mp4视频流中提取图像.看完后,似乎正确的方法是在C++中使用Media Foundations并打开框架/读取内容.
通过文档和示例的方式很少,但经过一些挖掘,似乎有些人通过将帧读入纹理并将该纹理的内容复制到记忆可读纹理(我甚至不是确定我在这里使用正确的条款).尝试我发现的虽然给了我错误,我可能做了一堆错误.
这是我尝试做的一小段代码(项目本身附在底部).
ComPtr<ID3D11Texture2D> spTextureDst;
MEDIA::ThrowIfFailed(
m_spDX11SwapChain->GetBuffer(0, IID_PPV_ARGS(&spTextureDst))
);
auto rcNormalized = MFVideoNormalizedRect();
rcNormalized.left = 0;
rcNormalized.right = 1;
rcNormalized.top = 0;
rcNormalized.bottom = 1;
MEDIA::ThrowIfFailed(
m_spMediaEngine->TransferVideoFrame(m_spRenderTexture.Get(), &rcNormalized, &m_rcTarget, &m_bkgColor)
);
//copy the render target texture to the readable texture.
m_spDX11DeviceContext->CopySubresourceRegion(m_spCopyTexture.Get(),0,0,0,0,m_spRenderTexture.Get(),0,NULL);
m_spDX11DeviceContext->Flush();
//Map the readable texture;
D3D11_MAPPED_SUBRESOURCE mapped = {0};
m_spDX11DeviceContext->Map(m_spCopyTexture.Get(),0,D3D11_MAP_READ,0,&mapped);
void* buffer = ::CoTaskMemAlloc(600 * 400 * 3);
memcpy(buffer, mapped.pData,600 * 400 * 3);
//unmap so we can copy during next update.
m_spDX11DeviceContext->Unmap(m_spCopyTexture.Get(),0);
// and the present it …Run Code Online (Sandbox Code Playgroud) c++ windows-8 windows-runtime ms-media-foundation winrt-xaml
在库中编译XAML时出现以下错误:
主题\ Generic.xaml(35,12):XamlCompiler错误WMC0610:XBF生成错误代码0x03e9.
它失败的XAML代码(第35行)是:
<Style TargetType="annotations:CanvasAnnotationItem" xmlns:annotations="using:ACME.Controls.CanvasAnnotation">
Run Code Online (Sandbox Code Playgroud)
没有额外的信息来帮助解决错误.
有没有办法检测Windows Mobile 10是否已转换为连续模式?
Windows Phone上的消息框看起来与桌面上的消息框不同,我们的设计人员需要奇偶校验.我想写自己的版本,但我只想让它在手机上工作 - 我想在桌面上使用默认版本,或者当应用程序在手机上转换为连续版时.
有任何想法吗?
我在网上找不到任何东西,也找不到允许我检测它的API.
合并一些文件后,如何接受所有尚未合并的文件(我们的或他们的)?
我试过
git checkout --theirs Project\folder\*.json
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有起到任何作用。
这与现有问题不同,因为我只想接受剩余的文件。并非所有文件(这通常是提出的问题)。
在为我遇到的问题寻找解决方案时,我遇到了GetContainerForItemOverride()并且我认为我不理解文档。
MSDN 说:
创建或标识用于显示给定项目的元素。
但是,没有给定的项目 - 没有参数被传递到方法中。
出于好奇 - 这种方法的目的是什么?
(我显然搜索过它并无法真正找到答案)
打开与服务器的连接时,我们的WinRT应用程序速度极慢.请求需要大约500毫秒才能运行.这阻碍了我们的一些场景.
在调试时,我们注意到当Fiddler处于活动状态时,请求要快得多 - 每个请求约100ms.稍后我们理解这是因为Fiddler在代理呼叫时使用了Keep-Alive连接,这使我们的代理呼叫更快.
我们以两种方式对此进行了双重检查.
我们尝试通过Connection头启用keep-alive(.Connection.Add("Keep-Alive"))但这似乎没有任何影响 - 事实上,.NET组件似乎公然忽略了标头,并且没有按要求发送(再次通过Fiddler检查).
有谁知道如何在Windows 8,WinRT,HttpClient类中为请求设置keep-alive?
c# windows-8 windows-runtime dotnet-httpclient windows-store-apps
我能够使用BitmapEncoder(C#,WinRT)来创建动画gif.但是,我还没弄清楚如何让GIF循环回来并从头开始?
没有尝试太多,因为我不知道该尝试什么.搜索了在GIF上设置的更多属性,但找不到任何相对的内容.
考虑以下C#代码:
async Task DoSomethingAsync()
{
if (m_f)
return;
await DoSomethingInternalAsync();
}
Run Code Online (Sandbox Code Playgroud)
编译器将其转换为一个任务返回调用,如果m_f为true,则任务立即完成,如果不是,则将"异步"操作"委托"给DoSomethingInternalAsync().
现在,我如何在c ++中执行此操作?代码看起来应该是这样的:
task<void> DoSomethingAsync()
{
if (m_f)
return [[What do I return here so the task is complete (.then called immediately)?!]];
return DoSomethingInternalAsync();
}
Run Code Online (Sandbox Code Playgroud)
Edit1:在C#中,我可以使用TaskCompletionSource <>来做同样的事情,但是没有使用async关键字 - 实质上是创建一个完成的Task.
有没有办法在运行时找出 PackageFamilyName(如清单中所示)?我查看了 /Program Files/WindowsApps 并在那里找不到相关的字符串。找不到任何可以让我这样做的 API...
欢迎任何其他想法。
原始消息如下.让我试着解释为什么我要求这个问题.
我有一个页面,可以收听Share charm请求:
void Page_Loaded(object sender, RoutedEventArgs e)
{
m_transferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.GetForCurrentView();
m_transferManager.DataRequested += TransferManager_DataRequested;
}
Run Code Online (Sandbox Code Playgroud)
当事件触发(TransferManager_DataRequested)时,它不会在UI线程上触发:
void TransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
var data = args.Request.Data;
// More related stuff omitted - not important.
data.SetDataProvider(StandardDataFormats.Bitmap, GetImage_DelayRenderer);
}
Run Code Online (Sandbox Code Playgroud)
现在,在GetImage_DelayRender调用时,它也不会在UI线程上调用.但是,在其中,我需要做一堆与UI相关的事情.具体来说,我需要调用一个只能在UI上工作的方法(这是我在别处使用的方法,我想重用它的逻辑).该方法被调用GetImageAsync,它需要在UI上运行,因为它与WriteableBitmap进行了大量的交互.它还会执行一系列异步操作(例如写入流等),这就是为什么它是异步的.我GetImageAsync()尽可能短的时间阻止用户界面.
这是GetImage_DelayRender看起来像:
private async void GetImage_DelayRenderer(DataProviderRequest request)
{
var deferral = request.GetDeferral();
await Dispatcher.RunTask(async () => // RunTask() is an extension method - described in the original question below.
{
try
{ …Run Code Online (Sandbox Code Playgroud) 我有一个返回double的简单动态对象:
class MyDynamic : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = 2.0;
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试调用一个接受int的方法:
private static void SomeMethod(int number)
{
}
Run Code Online (Sandbox Code Playgroud)
然后,我打电话并将我的值传递给dynamic方法:
dynamic x = new MyDynamic();
SomeMethod(x.number);
Run Code Online (Sandbox Code Playgroud)
现在,这会导致异常,因为运行时抱怨它找不到相关的方法.这是预期的行为吗?我原本希望运行时自动将返回值强制转换为方法请求的类型(在本例中为int).
这是什么东西应该工作?
是否有一个着名的,经过良好测试的nuget包,它将为我提供类似Parallel ForEach的功能,但是我可以限制同时运行的并发任务量?
我知道我自己可以写一个,所以不要求代码样本 - 只是询问是否有一个流行的 nuget包可以为我做.
谢谢!
c# ×7
windows-8 ×6
xaml ×3
.net ×2
c++ ×2
winrt-xaml ×2
animated-gif ×1
git ×1
ppl ×1
richtextbox ×1
task ×1
windows ×1
windows-10 ×1
wpf ×1