我有以下代码:
<TextBlock Grid.Row="0" Grid.Column="2" FontWeight="Bold" FontSize="13" Name="PART_FRBold">
<TextBlock.Text>
<MultiBinding StringFormat="This person is: {}{0}; {1}, {2}">
<Binding Path="PersonID"/>
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我可以在ViewModel中看到PersonID,LastName和FirstName都存在。但是实际上没有任何内容呈现到页面。我唯一能想到的是StringFormat不正确。
答案 0 :(得分:1)
更新了3.3:
实际的问题是语法错误。有关正确的语法,请参见https://stackoverflow.com/a/54949686/66988。
作为将来的参考:您可以在StringFormat中使用“静态”部分,只需使用{}来启动StringFormat。
原始不正确答案和解决方法:
问题是您不能在StringFormat属性内添加“此人是”。如果您删除该部分:
add_action('woocommerce_single_product_summary', 'display_specific_shipping_class', 15 );
function display_specific_shipping_class(){
global $product;
// HERE define your targeted shipping class name
$defined_shipping_class = "Estimated Delivery in 7-15 days";
// Get the product shipping class WP_Term Object
$term = get_term_by( 'slug', $product->get_shipping_class(), 'product_shipping_class' );
if( is_a($term, 'WP_Term') && $term->name == $defined_shipping_class ){
echo '<p class="product-shipping-class">' . $term->name . '</p>';
}
}
您可以看到实际的绑定有效。
您可以通过为文本的“静态”部分使用静态资源并将其绑定来解决此问题:
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}; {1}, {2}">
<Binding Path="PersonID"/>
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>
答案 1 :(得分:1)
Mikael Koskinen's answer正确地指出格式字符串存在问题(应归功于贷方)。
问题不是格式字符串中的文本“ 此人是:”,而是放错位置的{}
转义序列。因此,尽管Mikael提出的建议解决方案/解决方法可行,但它也有些复杂。为了使格式字符串起作用,只需要将转义序列{}
放在格式字符串的开头:
StringFormat="{}This person is: {0}; {1}, {2}"